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

时间:2019-05-24 10:43:07

标签: arrays typescript foreach boolean

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

1 个答案:

答案 0 :(得分:3)

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

forEach()

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

const array = [true, true];

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

console.log(array); // [false, false]

map()

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

const array = [true, true];

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

console.log(result); // [false, false]