无法在 TypeScript 中使用 forEach 更改布尔数组值

oks*_*mer 1 arrays foreach boolean typescript

我意识到当我尝试使用forEachmap函数更改布尔数组的值时,这些值不会改变。我必须构造一个 for 循环并按索引更改元素。我想知道为什么会这样?

Rob*_*sen 5

我认为您对工作方式forEach()map()工作方式的理解有缺陷。

forEach()

forEach()为数组中的每个元素调用回调方法,但本身不会更改数组。要实际使用 更改数组forEach(),您必须在回调函数中使用索引:

const array = [true, true];

array.forEach((v, i, a) => a[i] = !v);

console.log(array); // [false, false]
Run Code Online (Sandbox Code Playgroud)

map()

与 类似forEach()map()不会改变它被调用的数组。它对数组中的每个元素应用回调函数,并返回一个包含转换后元素的数组。这意味着您必须将map()操作的结果分配回一个变量:

const array = [true, true];

const result = array.map(v => !v);

console.log(result); // [false, false]
Run Code Online (Sandbox Code Playgroud)