【发布时间】:2018-12-29 02:25:20
【问题描述】:
我注意到调用 .map() 而不将其分配给变量会使其返回整个数组,而不仅仅是更改的属性:
const employees = [{
name: "John Doe",
age: 41,
occupation: "NYPD",
killCount: 32,
},
{
name: "Sarah Smith",
age: 26,
occupation: "LAPD",
killCount: 12,
},
{
name: "Robert Downey Jr.",
age: 48,
occupation: "Iron Man",
killCount: 653,
},
]
const workers = employees.concat();
workers.map(employee =>
employee.occupation == "Iron Man" ? employee.occupation = "Philantropist" : employee.occupation
);
console.log(employees);
但考虑到 .concat() 创建了原始数组的副本并将其分配给工作人员,为什么员工也会发生变异?
【问题讨论】:
-
工人可能是原始雇员的副本,但里面的对象是相同的引用。
-
如果您需要深度复制某些内容,请致电 npm:clone。
-
“我注意到调用 .map() 而不将其分配给变量会使其返回整个数组,而不仅仅是更改的属性:”
Array.prototype.map总是返回数组。如何使用该返回值并不重要。你的说法对我来说没有多大意义。
标签: javascript arrays function ecmascript-6