arrays - 无法在 TypeScript 中使用 forEach 更改 boolean 数组值

标签 arrays typescript foreach boolean

我意识到,当我尝试使用 forEachmap 函数更改 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/

相关文章:

java - 返回数组的问题

ruby - 在 Ruby 中,如何确定字符串是否不在数组中?

node.js - Observable.fromPromise 仅在 CircleCI 上构建时不存在

reactjs - 如何在上传之前使用 React 和 TypeScript 从 <input type ="file"> 获取图像尺寸?

php - 如何遍历数组的数组

python - 重复 1D NumPy 数组中的值 "N"次

常量对象的常量数组

typescript - 如何让 tslint 监视特定文件夹中的更改?

使用 forEach 的 MongoDB 批量更新效率

c# - Razor ASP.NET : Show data from 'if' inside 'foreach' . 'break;' 不工作