arrays - 无法在 TypeScript 中使用 forEach 更改布尔数组值
问题描述
我意识到,当我尝试使用forEach
或map
函数更改布尔数组的值时,这些值不会改变。我必须构造一个 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]
推荐阅读
- c - 如果文件路径存在,open(filepath, O_WRONLY|O_EXCL) 是否返回值?
- c# - 如何在 Nunit 命令行执行中使用排除类别属性
- javascript - firebase 检查文件是否存在
- java - 如何在@PostConstruct 中为 Groovy Spock 测试用例模拟语句
- python - 使 Whatsapp Web 不需要 QR 扫描这是如何工作的 - Selenium
- uipath - 什么是 UiPath QueueItems 的有效 IEnumerable UiPath 数据类型
- python-3.x - 你可以在 Python 的另一个静态变量中访问一个静态变量吗
- php - Composer 总是遇到“已用尽 1610612736 字节的允许内存大小” - 在服务器和本地
- binary-tree - 计算二叉树递归方法的高度
- azure - 自托管无头代码空间