【问题标题】:Remove value from associative array [duplicate]从关联数组中删除值[重复]
【发布时间】:2013-01-11 00:19:23
【问题描述】:

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

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

将其视为一个数组

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

现在我只想删除util2。我该怎么做,我尝试使用delete,但它不起作用。

谁能帮帮我?

【问题讨论】:

  • 如果这是一个对象字面量,则周围的方括号应该是一个括号。
  • 我看不到关联数组。
  • var object = { 'utils': [ 'util1', 'util2' ] } object.utils.splice(1, 1);

标签: javascript arrays object


【解决方案1】:

使用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,你快到了:它是object.utils.splice(1, 1)。你必须告诉它要删除多少(第二个1)。第一个1 只是告诉它在什么索引处做某事。 编辑: 是的,你去。 :-)
  • 如果对象是这样定义的:var object = { 'utils': [ 'util2', 'util1' ] }?
  • 达林想说,如果元素的顺序不同怎么办。这一切都在这个问题的副本中得到了回答。
  • 是的,我就是这个意思。此解决方案仅适用于某些非常特殊的情况。
  • @DarinDimitrov 那你会做.utils.splice(0)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    我认为 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 --;
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      • 2021-10-12
      • 2011-12-31
      • 2011-04-15
      • 1970-01-01
      相关资源
      最近更新 更多