javascript - 在 JavaScript ForEach 中更新迭代数组
问题描述
用年轻的员工替换 > 50 岁的员工。
我正在尝试更新我正在forEach()
处理的数组中的一个项目。分配current
失败,同时注意并在块工作index
后替换项目。forEach()
请解释这种行为?
var youngerEmployee = {
name: {
first: 'B',
last: 'C'
},
age: 25
}
var employees = [
{
name: {
first: 'X',
last: 'Y'
},
age: 45
},
{
name: {
first: 'A',
last: 'B'
},
age: 54
}
];
/* --- Failed approach --- */
employees.forEach(
(employee) => {
if(employee.age > 50) {
employee = youngerEmployee;
}
}
);
console.log(employees);
/* --- Successful approach --- */
var i = -1;
employees.forEach(
(employee, index) => {
if(employee.age > 50) {
i = index;
}
}
);
employees[i] = youngerEmployee;
console.log(employees);
解决方案
在您的“失败方法”中,employees
数组没有改变,因为employee
引用了数组中的当前员工。通过分配employee = youngerEmployee
,您可以更改引用,否则employees
数组不会受到影响。
推荐阅读
- c# - 将应用程序从单用户移动到多会话
- python - 如何查看玩家是否回答了与该值的键对应的值
- docker - docker-compose up 无法为服务 php 创建容器:无法挂载本地卷
- asp.net - 发布模式下swagger文件的问题
- python - 关于(canny)边缘检测的一般问题
- c - uint64_t 的安全低 32 位掩码
- node.js - 有什么方法可以在套接字服务器中创建无限循环
- scala - scala的“案例类”中的“案例”一词是什么意思?
- c++ - Qt - 重新实现 QIODevice 以实时听到我自己的声音
- r - 在函数中更改 ggplot 中的图例顺序