javascript - 循环遍历以数组为值的 Javascript 对象

标签 javascript arrays object key

我的对象看起来像这样

{
  "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"
  ]
}

最佳答案

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

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

关于javascript - 循环遍历以数组为值的 Javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29561053/

相关文章:

javascript - 如何在 Javascript 中从本地 URL 获取图像并转换为 Base64

javascript - 使用 Material UI/React Stepper 创建 "pages"个步骤(如表分页)

c# - 对象初始值设定项和构造函数

java - 如何使用对象作为类的变量,如ArrayList?

java - 是否可以创建嵌套的 LinkedObject [Java]

javascript - 无法绑定(bind)到 'routerlink',因为它不是使用 angular2-webpack-starter 的已知 native 属性

javascript - 带有 from 属性的 document.querySelector 返回 null 错误

arrays - 将字符变化列导入 PSQL 中的字符变化数组列

c++ - 在 C++ 中输出分配给 double 组中的元素的字符串

javascript - 如何删除二维数组中具有空值Javascript的索引自定义元素