splice从数组中删除,也从其父数组中删除 - 奇怪的问题

时间:2013-11-06 11:26:29

标签: javascript arrays javascript-objects splice array-splice

嗨,我的代码中有这个简单的脚本,

var c = [{a: 'apple'},{b: 'ball'},{c: 'ball'},{d: 'ball'}];
console.log(c); //prints 3 objects
var d = c; 
d.splice(0, 3);         
console.log(c); //prints 1 object        
console.log(d); //prints 1 object 

对我来说奇怪的是,拼接后的c和d结果相同(从c中删除3个对象后,我从d中删除了c而不是c)。 使用d.splice(0, 3)它应该从'd'删除为什么它也会从'c'中删除?有任何想法吗 ??我在哪里错过了什么,请指导我。

1 个答案:

答案 0 :(得分:3)

var d = c;

这是引用数组,而不是重复它。

要复制它并使d成为一个完全独立的数组,请使用.slice(0)

var d = c.slice(0)