我需要编写一个代码来获取一个整数数组并返回一个数组,如果它是偶数则元素增加,如果是奇数则减少。我尝试使用过滤器和映射 JavaScript 函数。这是代码:
var test=[2,5,8,13];
var my_function = (some_array) => some_array.filter((num,index,array) => num % 2 == 0 ? array[index]=num+1 : array[index]=num-1 );
console.log(my_function(test));
console.log(test);
此代码在使用您拥有的地图时打印 [2, 5, 8, 13] [3, 4, 9, 12]
var test=[2,5,8,13];
var my_function = (some_array) => some_array.map((num,index,array) => num % 2 == 0 ? array[index]=num+1 : array[index]=num-1 );
console.log(my_function(test));
console.log(test);
此代码打印 [3, 4, 9, 12] [3, 4, 9, 12]
如您所见,使用 filter 克隆对象,而使用 map 更改对象。MDN 上的文档说:
map() 方法创建一个新数组,其结果是对该数组中的每个元素调用提供的函数。
我是否以错误的方式使用地图和过滤器或文档有误?我在 chrome 和 firefox 上测试了这种行为。
实际上我使用了错误的地图功能。这是固定的地图代码
var my_function = (some_array) => some_array.map((num) => num % 2 == 0 ? num+1 : num-1 );