从多维数组中删除元素

时间:2012-04-16 13:08:45

标签: javascript object

我有以下多维数组:

{"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}}

在此示例中,我想删除

"1":{"cid":"1","uid":"3"}

从中。 我已经尝试了我在stackoverflow上找到的所有解决方案,并且无法使它们中的任何一个工作。我主要是php的人,所以我可能会错过一些重要的东西吗?

6 个答案:

答案 0 :(得分:13)

只需将delete与适当的属性一起使用。

var obj = {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}};

delete obj["1"];

注意1周围的"将其标记为标识符而不是数组索引!

修改 正如评论中指出的那样,无论您如何处理obj属性,[1]都是一个对象而且没有数组。我的最后一点是为了清楚地表明你正在使用一个对象而不是一个数组。

根据我的经验,大多数人将整数属性与数组和字符串属性与对象相关联。所以我认为以给定的方式强调财产可能会更有帮助。

答案 1 :(得分:4)

 var myObj= {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}}

delete myObj['1'];

alert ( myObj['1']);

请注意删除存在跨平台问题:

跨浏览器问题

  

尽管ECMAScript生成了对象的迭代顺序   依赖于实现,它可能看起来是所有主流浏览器   支持基于最早添加的属性的迭代顺序   首先(至少对于不在原型上的属性)。但是,在   在Internet Explorer的情况下,当一个人在一个属性上使用delete时,有些人   混淆行为结果,阻止其他浏览器使用   像对象文字这样的简单对象作为有序关联数组。在   资源管理器,而属性值确实设置为undefined(如果有)   后来添加了一个具有相同名称的属性,属性将是   在旧的位置迭代 - 而不是在迭代序列的末尾   在删除该属性然后添加之后,人们可能会发现   它回来了。

答案 2 :(得分:1)

JavaScript没有多维数组,只有数组和对象。那说:delete theObject['1'];应该可以正常工作

答案 3 :(得分:1)

var arr=[[10,20,30],[40,50,60],[70,80,90]];

for(var i=0;i<arr.length;i++){
    for(var j=0;j<arr[i].length;j++){
        if(arr[i][j]==50){
            arr[i].splice(j,1);
        }
    }
}

document.write(arr);

答案 4 :(得分:0)

以这种方式将Object(不是Array)分配给变量:

var o = {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}};

然后做:

delete o['1'];

就是这样!

答案 5 :(得分:0)

你可以在javascript中使用delete 例如:

var x = {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}};

delete x['1'];

另外,请检查:

  

Deleting Objects in JavaScript