JavaScript数组方法.forEach无法按预期工作(与.map相反)

时间:2018-09-25 19:51:16

标签: javascript arrays foreach

我正在尝试先过滤数组的奇数,然后使用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;
  });
}

我不明白是什么让我的代码如此工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:-1)

=IF(B3=0,(SUM(E3*D3)*A3)) =IF(B2=A2,(SUM(E2*D2)*B2)) 是一个原语,并按值传递给forEach函数。因此,您要使用的变量是基于 的,它基于数组中的内容,而不是对数组中内容的引用。当您执行value时,您正在重新分配局部变量值,但是该重新分配仅在您的forEach代码中可见。它对数组没有影响。