【问题标题】:Loop over nested objects循环嵌套对象
【发布时间】:2018-03-23 16:39:07
【问题描述】:

找到了这个主题的几个线程,但无法解决我的问题。

我有一个像这样的对象:

 allItems: {
            item1: {
                val1: 4,
                val2: 'blaharb'
                   },
            itemxyz2: {
                val1: 76,
                val2: 'blurb'
                   }
           }

现在我只想列出一个类似的列表

item1 对于 val1 有 4,对于 val2 有 blaharb
itemxyz2 对于 val1 有 76,对于 val2 有 blurb

到目前为止我的尝试:

console.log(allItems.item1.val1); // prints correctly '4' in the console

$.each(allItems, function(key, value) {
 console.log(key); // gives me correct key (like 'item1')
 console.log(allItems.item1.val1);// error: "undefined is not an object" - but why?!
console.log(allItems.key.val1); // same error, understandable ...
});

非常感谢帮助,谢谢!

【问题讨论】:

    标签: jquery nested each


    【解决方案1】:

    您可以使用数组语法访问您的对象属性:

    $.each(allItems, function(key, value) {
      console.log(allItems[key]["val1"]);
      console.log(allItems[key]["val2"]);
    });
    

    例子:

    var allItems = {
      item1: {
        val1: 4,
        val2: 'blaharb'
      },
      itemxyz2: {
        val1: 76,
        val2: 'blurb'
      }
    };
    
    
    $.each(allItems, function(key, value) {
      console.log(allItems[key]["val1"]);
      console.log(allItems[key]["val2"]);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    【讨论】:

    • 感谢@Aknosis 的超快速回答 - 这正是我需要的信息。
    【解决方案2】:

    您需要使用“值”选项。

    喜欢:

      $.each(allItems, function(key, value) {
                console.log(key, value.val1);
                console.log(key, value.val2);
      });
    

    【讨论】:

      猜你喜欢
      • 2020-11-30
      • 2021-05-19
      • 2018-10-14
      • 2021-12-09
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多