关于javascript:从关联数组中移除值

Remove value from associative array

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Remove specific element from a javascript array?

我有一个数组,我想从中删除一个值。

将此作为数组

[ 'utils': [ 'util1', 'util2' ] ]

现在我只想删除util2。我怎么能这样做呢?我试过用delete,但没用。

有人能帮我吗?


使用splice方法:

1
2
3
var object = { 'utils': [ 'util1', 'util2' ] }

object.utils.splice(1, 1);

如果您不知道数组元素的实际位置,那么需要迭代数组并从中拼接元素。尝试以下方法:

1
2
3
4
5
6
7
8
9
for (var i = object.utils.length; i--;) {
    var index = object.utils.indexOf('util2');

    if (index === -1) break;

    if (i === index) {
        object.utils.splice(i, 1); break;
    }
}

更新:TechFoobar的答案似乎比我的更为惯用。考虑用他的代替。


您可以将Array.splice()Array.indexOf()结合使用,以获得所需的行为,而无需遍历数组:

1
2
3
4
var toDelete = object.utils.indexOf('util1');
if(toDelete != -1) {
    object.utils.splice(toDelete, 1);
}


我认为在JavaScript中没有所谓的关联数组。它实际上是一个物体。

1
[ 'utils': [ 'util1', 'util2' ] ]

对于这一行,我认为它不会编译。你应该改写这个。

1
var obj = { 'utils': [ 'util1', 'util2' ] }

因此,要删除数组(内部数组)中的元素"util2",有两种方法。

  • 使用POP()

    1
    obj["utils"].pop(); // obj["utils"] is used to access the"property" of the object, not an element in associative array
  • 减少长度

    1
    obj["utils"].length --;