【问题标题】:Can't change Boolean array values with forEach in TypeScript无法在 TypeScript 中使用 forEach 更改布尔数组值
【发布时间】:2019-10-10 23:07:24
【问题描述】:

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

【问题讨论】:

  • 你的代码在哪里?

标签: arrays typescript foreach boolean


【解决方案1】:

我认为您对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]

【讨论】:

  • 感谢您的知识。我记得为其他类型的对象更改数组元素。这与可变性有关吗?
  • 是的。您可以更改数组中对象的属性,但如果您想用新对象替换它们,则必须使用上述方法。
猜你喜欢
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 2021-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
相关资源
最近更新 更多