如何在javascript中取消设置数组中的元素?

时间:2008-10-16 00:17:42

标签: javascript arrays

如何从数组foo中删除键“bar”,以便“bar”不会显示在

for(key in foo){alert(key);}

7 个答案:

答案 0 :(得分:222)

不要使用删除,因为它不会从数组中删除元素,只会将其设置为未定义,然后才会在数组的长度中正确反映。

如果你知道密钥,你应该使用 splice ,即

myArray.splice(key, 1);

对于Steven职位的人,你可以尝试这样的事情:

for (var key in myArray) {
    if (key == 'bar') {
        myArray.splice(key, 1);
    }
}

for (var key in myArray) {
    if (myArray[key] == 'bar') {
        myArray.splice(key, 1);
    }
}

答案 1 :(得分:50)

delete foo[key];

:d

答案 2 :(得分:36)

一个重要的注意事项:JavaScript Arrays不是像您可能习惯使用PHP那样的关联数组。如果“数组键”是一个字符串,则不再对数组的内容进行操作。您的数组是一个对象,并且您使用括号表示法来访问名为< key name>的成员。因此:

var myArray = [];
myArray["bar"] = true;
myArray["foo"] = true;
alert(myArray.length); // returns 0.

因为你没有向数组中添加元素,所以你只修改了myArray的bar和foo成员。

答案 3 :(得分:30)

如果您知道密钥名称,请执行以下操作:

delete array['key_name']

答案 4 :(得分:1)

http://www.internetdoc.info/javascript-function/remove-key-from-array.htm

removeKey(arrayName,key);

function removeKey(arrayName,key)
{
 var x;
 var tmpArray = new Array();
 for(x in arrayName)
 {
  if(x!=key) { tmpArray[x] = arrayName[x]; }
 }
 return tmpArray;
}

答案 5 :(得分:1)

我就是这样做的

 myArray.splice( myArray.indexOf('bar') , 1) 

答案 6 :(得分:0)

删除和拼接有一个重要的区别:

原始数组:

[<1 个空项目>, '一个',<3 个空项目>, '五个', <3 个空项目>,'九个']

拼接后(array.splice(1,1)):

[ <4 个空项>, '五个', <3 个空项>, '九个' ]

删除后(删除数组[1]):

[ <5 个空项>, '五个', <3 个空项>, '九个' ]