一个数组赋值给另一个数组

把一个数组赋值给另一个数组

把数组map的内容全部赋值给另一个数组a,当一个数组a改变的时候,map也发生了变化,该如何解决?

var map = new Array("china","america","japan","canada");
var a = map;
a.unshift("aa");
console.log(a);
console.log(map);
// a 结果[ "aa", "china", "america", "japan", "canada" ]
//map结果[ "aa", "china", "america", "japan", "canada" ]

改变数组a,原来的数组map也发生了变化。这是因为JavaScript存储对象时存储的是地址,var a = map浅拷贝导致 map 和 a 指向同一块内存地址,所以产生这样的现象。
解决方法:深拷贝(slice、concat)

var map = new Array("china","america","japan","canada");
var a = [].concat(map);//或者a = map.slice(0)效果相同
a.unshift("aa");
console.log(a);
console.log(map);
// a 结果[ "aa", "china", "america", "japan", "canada" ]
//map结果[ "china", "america", "japan", "canada" ]

你可能感兴趣的:(JavaScript)