js数组map方法,如果原数组中是对象或数组,原数组也改变,为什么?

var list = [{'a': 1},{'a': 2}];

var newList = list.map(function(index){

    return index.a += 1;

});

console.log(newList,'newList',list,'list');

// list也改变了 list = [{'a': 2},{'a': 3}]

// 本人小白,求大神指教,勿喷,谢谢!


沧海一幻觉
浏览 2373回答 2
2回答

繁花如伊

跟map没关系js对象是引用类型,字符和数字是基本类型基本类型传值是复制引用类型传值是引用举个例子:var a = 1;var b = a;b++;console.log(a);和var a = [1];var b = a;b[0]++;console.log(a);

weixin_慕斯卡9299553

return index.a+=1 的时候把原数组也赋值了不要等号,改成return index.a+1 原数组就不变了或者改成return {'a':index.a+1}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript