javascript - 当一个简单的 For Loop 工作正常时,我的 forEach 方法有什么问题

标签 javascript dictionary foreach cycle

所以,我有一个简单的任务,给定数组:let arr = [true, false, true, false, true];我需要将 true 反转为 false,反之亦然。 我已经设法用 for 循环做到了这一点:而且它工作正常。

现在,我正尝试对 forEach 做同样的事情,但我不明白为什么这行不通。所以,这是我的代码:

for (let i = 0; i < arr.length; i++) {
    if (arr[i] === true) arr[i] = false;
    else arr[i] = true;
} // it works

// for some reason, this doesn't
arr2.forEach(el => el === true ? el = false : el = true);
console.log(arr)

//Neither this: 
arr.forEach(el => el === true && el = false || el === false && el = true);
console.log(arr)

map 也不起作用: 有人可以指出我的错误并解释我做错了什么吗?也许显示其他方法来解决它?使用过滤器,减少或哪个更可取? 单线解决方案是高度优选的。 感谢您的回答!

最佳答案

您需要的是 Array.prototype.map,因为分配 el 不同于分配 arr[i](它不是改变数组):

arr2 = arr2.map(el => el === true ? false : true);

可以简化为:

arr2 = arr2.map(el => !el);

关于javascript - 当一个简单的 For Loop 工作正常时,我的 forEach 方法有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57956205/

相关文章:

python - 如何将数据帧转换为字典,保留 1 列作为键并将第二列的值与每个键相加

javascript - angularjs调用对象并返回值

Python,当键是科学格式的 float 时,如何按键对字典进行排序?

javascript - 通过 JQuery 加载传递 var

python - 将数据帧聚合到嵌套字典 (python)

php - 如何将两个 foreach 循环合并为一个

powershell - 有条件地替换 PowerShell 对象中的值

php - 如何对输出进行分类

java - struts2:在主/调用jsp中显示结果jsp

javascript - HTML Canvas 和 JavaScript - 悬停时缩放对象