从数组及其父数组中删除拼接 - 奇怪的问题

splice deletes from an array and also from its parent array - strange issue

本文关键字:数组 问题 拼接 删除      更新时间:2023-09-26

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

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"中删除太???任何想法??我在哪里错过了什么,请指导我。

var d = c;

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

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

var d = c.slice(0)