从关联数组中删除值

时间:2013-01-27 15:23:26

标签: javascript arrays object

  

可能重复:
  Remove specific element from a javascript array?

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

将此视为数组

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

现在我只想删除util2。我怎么能这样做,我尝试使用delete,但它没有用。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:7)

使用splice方法:

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

object.utils.splice(1, 1);

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

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的回答似乎比我的更为惯用。考虑使用他的代替。

答案 1 :(得分:5)

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

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

答案 2 :(得分:0)

我认为在Javascript中没有称为关联数组的东西。它实际上是一个对象。

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

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

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

所以要删除数组中的元素“util2”(内部数组),有两种方法。

  1. 使用pop()

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

    obj["utils"].length --;