【问题标题】:splice deletes from an array and also from its parent array - strange issuesplice 从数组及其父数组中删除 - 奇怪的问题
【发布时间】:2013-11-17 14:49:28
【问题描述】:

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

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)。 使用d.splice(0, 3) 它应该从“d”中删除,为什么它也会从“c”中删除???有任何想法吗 ??我在哪里遗漏了什么,请指导我。

【问题讨论】:

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


    【解决方案1】:
    var d = c;
    

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

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

    var d = c.slice(0)
    

    【讨论】:

    • var d = c.splice(0); d.splice(0, 3);控制台.log(c); // 打印空白 console.log(d); // 打印 1 个对象
    • @Luckyy - 对不起,我的错误。方法名称非常相似,实际上是 slice(没有 p) - 请参阅上面的更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 2014-07-30
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 2010-10-07
    相关资源
    最近更新 更多