我正在尝试先过滤数组的奇数,然后使用Javascript中的数组方法将它们加倍。
function doubleOddNumbers(array) {
return array.filter((value) => {
return value % 2 === 1
}).map((value) => {
return value *= 2;
});
}
如果我使用forEach而不是map(出于参数目的,我不想生成一个新数组,我只想重写我已经拥有的数组),由于某种原因,它不会更改原始数组。因此,例如,如果我的输入为[1、2、3、4、5],则在运行该函数并记录结果之后,结果将为[1、2、3、4、5]。它甚至没有被过滤。
function doubleOddNumbers(array) {
return array.filter((value) => {
return value % 2 === 1
}).forEach((value) => {
value *= 2;
});
}
我不明白是什么让我的代码如此工作。任何帮助将不胜感激。
答案 0 :(得分:-1)
=IF(B3=0,(SUM(E3*D3)*A3))
=IF(B2=A2,(SUM(E2*D2)*B2))
是一个原语,并按值传递给forEach函数。因此,您要使用的变量是基于 的,它基于数组中的内容,而不是对数组中内容的引用。当您执行value
时,您正在重新分配局部变量值,但是该重新分配仅在您的forEach代码中可见。它对数组没有影响。