【问题标题】:How to iterate through duplicate keys in an object如何遍历对象中的重复键
【发布时间】:2015-05-06 19:27:32
【问题描述】:

当我在控制台中输入这个时:

var a = {"baz":null, "baz":null, "baz":null, "taz":null};

for (var x in a) {
   console.log(x);
}

我只得到: “巴兹” “塔兹”

我需要捕获键“baz”的所有实例...有什么方法可以做到这一点吗? for...in 只会执行上述操作。

【问题讨论】:

  • 您不能复制密钥,它们必须是唯一的。
  • 您不能拥有相同的密钥两次。那会否定钥匙的意义。这将如何工作?!
  • 每次在 a 对象中声明 baz 时,您都在重新定义它。
  • 为什么这个问题被否决了?

标签: javascript object iteration


【解决方案1】:

我需要捕获键“baz”的所有实例...有什么方法可以做到这一点?

不,没有。结果对象不会以任何方式包含有关重复键的信息。

根据您的用例,您可以使用数组代替对象,也可以使用数组作为属性的值(并相应地对其进行处理):

var a = {"baz": [null, null, null], "taz":null};

【讨论】:

    【解决方案2】:

    您可以通过将数组作为键的值来做到这一点:

    {baz: ["homer","bart","liza"], foo:[1,2,3] }
    

    然后显示:

    for (var x in a) {
    
      for (var i=0; i < a.length; i++){
      console.log(a[i]);
       } 
    
    }
    

    【讨论】:

      【解决方案3】:

      正如 Felix 指出的那样,您不能有重复的键。 结构化数据的另一种方法可能是字典数组。

      (我假设您尝试使用每个键存储数据,在您的问题中为“null”。我用“other_value”键表示)

      var a = [{name : "baz", other_value : null}, {name : "baz", other_value : null}, {name : "taz", other_value : null}];
      
      for(var i=0; i<a.length; i++){
          console.log(a[i].name);
      }
      

      【讨论】:

        猜你喜欢
        • 2015-09-15
        • 2020-06-10
        • 2013-08-25
        • 1970-01-01
        • 2021-11-15
        • 2018-08-06
        • 2017-08-30
        • 2019-11-27
        相关资源
        最近更新 更多