我一直在使用这些数组函数并知道这些不会改变原始数组。如果我错了,请纠正我。
这些功能对对象不起作用。
javascript中是否有可用于更改原始数组的内容。我知道工作是
arr = arr.map((val, index)=>{// change value here}); // I dont want to assign the aray it shelf
arr.map((val, index)=>{// change value here}); // it should change the original array
答案 0 :(得分:1)
这些方法都没有对每个元素产生副作用,因为JavaScript中的所有内容都是按值传递的。您可以自己修改项目,而不是修改数组中引用的内容。
如果你真的想要更改原始数组,传统的for
循环可以做到这一点,或者只使用提供的index
参数。
for (var i = 0; i <= arr.length; i++) {
if (shouldReplace(i)) {
arr[i] = newValue(i);
}
}
答案 1 :(得分:0)
如果你不愿意像你提到的那样重新分配变量,并且你没有添加或删除元素,那么最好的选择是:
arr.forEach((val, index)=>{val.foo = bar;});
答案 2 :(得分:0)
map
回调方法接受第三个参数,即原始数组。所以你可以从技术上做这样的事情:
var arr = ['apple', 'orange', 'banana', 'grape'];
arr.map((item, idx, org) => org[idx] = '1 ' + item);
console.log(arr);
&#13;