我意识到,当我尝试使用 forEach
或 map
函数更改 boolean 数组的值时,值并没有改变。我必须构造一个 for 循环并按索引更改元素。我想知道为什么会这样?
最佳答案
我认为您对 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()
不会更改调用它的数组。它对数组中的每个元素应用回调函数,并返回一个包含转换后元素的新数组。这意味着您必须将 map()
操作的结果分配回一个变量:
const array = [true, true];
const result = array.map(v => !v);
console.log(result); // [false, false]
关于arrays - 无法在 TypeScript 中使用 forEach 更改 boolean 数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56291066/