【问题标题】:loop through Javascript object that has an array as a value循环遍历具有数组作为值的 Javascript 对象
【发布时间】:2015-04-10 12:08:53
【问题描述】:

我的对象看起来像这样

{
  "about.php": [
    "#topNav",
    "#botNav",
    "#employees"
  ],
    "index.php": [
    "#blah"
  ]
}

我是这样循环的

        var validation_messages = obj;

            for (var key in validation_messages) {
               if (validation_messages.hasOwnProperty(key)) {
                   var obj = validation_messages[key];
                    for (var prop in obj) {
                      if(obj.hasOwnProperty(prop)){
                        console.log(prop + " = " + obj[prop]);
                      }
                   }
                }
            }

我得到了这个结果

0 = #topNav
1 = #botNav
2 = #employees
0 = #blah

我需要对象键的名称,而不是对象值中的数组键。像这样:

about.php = #topNav
about.php = #botNav
about.php = #employees
index.php = #blah

如果它们不存在,我会将新值推送到数组中:

{
  "about.php": [
    "#topNav",
    "#botNav",
    "#employees"
  ],
    "index.php": [
    "#blah",
    "#newValue"
  ]
}

【问题讨论】:

    标签: javascript arrays object key


    【解决方案1】:

    您错误地循环了第二个结构。它是一个数组,而不是一个对象。

    for (var key in validation_messages) {
        if (validation_messages.hasOwnProperty(key)) {
            var obj = validation_messages[key];
    
            // use a for loop here instead of for...in
            for (var i = 0, l = obj.length; i < l; i++) {
                console.log(key + " = " + obj[i]);
            }
        }
    }
    

    DEMO

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 2015-10-15
      • 1970-01-01
      • 2017-07-16
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多