如何从数组foo中删除键“bar”,以便“bar”不会显示在
中for(key in foo){alert(key);}
答案 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 个空项>, '九个' ]