【发布时间】:2010-09-17 10:40:47
【问题描述】:
如何从数组 foo 中删除键 'bar' 以使 'bar' 不会出现在
for(key in foo){alert(key);}
【问题讨论】:
标签: javascript arrays
如何从数组 foo 中删除键 'bar' 以使 'bar' 不会出现在
for(key in foo){alert(key);}
【问题讨论】:
标签: javascript arrays
不要使用 delete,因为它不会从数组中删除元素,只会将其设置为未定义,这样就不会正确地反映在数组的长度中。 p>
如果您知道密钥,您应该使用 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);
}
}
【讨论】:
for (var key in myArray) 而不是for (key in myArray) - 否则key 是一个全局变量,如果您在该循环中调用具有相同问题的函数,您将得到意想不到的结果。
delete foo[key];
:D
【讨论】:
eval。可以通过不使用eval 的更简单的方法来删除对象/数组的键/索引。
如果您知道键名,只需这样做:
delete array['key_name']
【讨论】:
一个重要的提示:JavaScript 数组不是像您在 PHP 中可能习惯的那样的关联数组。如果您的“数组键”是一个字符串,则您不再对数组的内容进行操作。您的数组是一个对象,并且您使用括号表示法来访问名为
因为你没有给数组添加元素,你只修改了myArray的bar和foo成员。
【讨论】:
我会这样做
myArray.splice( myArray.indexOf('bar') , 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;
}
【讨论】:
删除和拼接有一个重要的区别:
原始数组:
[, 'one',, '5', ,'nine']
拼接后(array.splice(1,1)):
[,'5',,'9']
删除后(删除数组[1]):
[ , '5', , '9' ]
【讨论】: