当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在javascript中取消设置数组中的元素?》经验,为你挑选了4个好方法。

如何从数组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



1> going..:

不要使用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`是一个全局变量,如果你在该循环中调用一个具有相同问题的函数,你将得到意想不到的结果.
+1好点,我也喜欢这样:http://ejohn.org/blog/javascript-array-remove/
@ThiefMaster - 关心解释?我不知道这意味着什么,并且热衷于学习.与往常一样,编辑比现有评论好100万倍; 你应该知道你拥有的代表数量.
请注意,此代码泄漏了全局`key`.
注意,如果数组中的多个项目与"bar"匹配,则第二个示例不起作用.数组的索引将会移动,您将错过拼接一半的项目.相反,使用for循环,在找到匹配项时递减索引.

2> 小智..:
delete foo[key];

:d


从技术上说,这不回答问题.他正在寻找关键的"酒吧".而你的关键变量并不意味着这一点.:P
键="酒吧"; eval("删除foo."+键);*隐藏*; D.
实际上,如果你通过delete foo [key]从索引数组中删除它会将值存储在foo [key] = undefined中,而foo.length将保持相同,这是错误的.所以请改用SPLICE
做*不*使用'eval`.删除对象/数组的键/索引可以通过更简单的方法来实现,而不使用`eval`.

3> John Factori..:

一个重要的注意事项:JavaScript Arrays不是那些您可能习惯使用PHP的关联数组.如果"数组键"是一个字符串,则不再对数组的内容进行操作.您的数组是一个对象,并且您使用括号表示法来访问名为的成员.从而:

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

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



4> 小智..:

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

delete array['key_name']


这不是阵列!它是一个对象(是的,这些在JS中称为关联数组,但不是,它们不是真的,如果你真的使用JS数组,这个方法是有害的).
推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有