应该用forEach改变数组的值吗? https://segmentfault.com/q/1010000013170900?utm_source=index-hottest
由于js中的数组是引用类型,所以可以利用类似指针的特性通过改变另一个变量去修改原始的值。我认为这其实是js中的缺陷,所以我不喜欢利用这个"缺陷"去实现一些功能,在最近的一次code review中,同事指出了这个问题。所以我希望有更多朋友能给我一些建议。
下面就是简单的例子。
let arr = [{
a:1,
b:2,
}, {
a:3,
b:4,
}];
如果有以上数组,我需要将每一项的a改为3。大概有两种写法,一种是用forEach,另一种是用map来返回一个新数组(暂不考虑for循环)。
forEach:
arr.forEach((item) => {
item.a = 3;
});
map:
arr = arr.map((item) => { // 有同事指出应该声明一个新变量来存储map的结果,这个建议我认为是对的。
item.a = 3;
return item;
});