如何从数组foo中删除键"bar",以便"bar"不会显示在其中
for(key in foo){alert(key);}
going.. 229
不要使用delete,因为它不会从数组中删除元素,它只会将其设置为undefined,然后不会在数组的长度中正确反映.
如果你知道钥匙你应该使用拼接即
myArray.splice(key, 1);
对于史蒂文的位置,你可以尝试这样的事情:
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(myArray中的var键)`而不是`for(myArray中的键)` - 否则`key`是一个全局变量,如果你在该循环中调用一个具有相同问题的函数,你将得到意想不到的结果. (21认同)
+1好点,我也喜欢这样:http://ejohn.org/blog/javascript-array-remove/ (3认同)
@ThiefMaster - 关心解释?我不知道这意味着什么,并且热衷于学习.与往常一样,编辑比现有评论好100万倍; 你应该知道你拥有的代表数量. (3认同)
请注意,此代码泄漏了全局`key`. (2认同)
注意,如果数组中的多个项目与"bar"匹配,则第二个示例不起作用.数组的索引将会移动,您将错过拼接一半的项目.相反,使用for循环,在找到匹配项时递减索引. (2认同)
小智.. 51
delete foo[key];
:d
不要使用delete,因为它不会从数组中删除元素,它只会将其设置为undefined,然后不会在数组的长度中正确反映.
如果你知道钥匙你应该使用拼接即
myArray.splice(key, 1);
对于史蒂文的位置,你可以尝试这样的事情:
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); } }
delete foo[key];
:d
一个重要的注意事项:JavaScript Arrays不是那些您可能习惯使用PHP的关联数组.如果"数组键"是一个字符串,则不再对数组的内容进行操作.您的数组是一个对象,并且您使用括号表示法来访问名为
var myArray = []; myArray["bar"] = true; myArray["foo"] = true; alert(myArray.length); // returns 0.
因为您没有向数组添加元素,所以您只修改了myArray的bar和foo成员.
如果您知道密钥名称,请执行以下操作:
delete array['key_name']