【问题标题】:Looping over JSON key objects that doesn't have array循环遍历没有数组的 JSON 键对象
【发布时间】:2016-02-26 19:39:04
【问题描述】:

我有以下 JSON:

basket = {
    "Items": 3,
    "Item": {
          "iPhone 6": {
              "productId": 227,
         "url": "http://example.com/iphone6",
         "price": 299.99
           },
          "Solio Mono Solar Charger": {
          "productId": 655,
          "url": "http://website.com/solio_charger.html",
          "price": 29.95
           },
           "24 Month Warranty Package": {
             "productId": 681,
          "url": "http://website.com/24_month_warranty.html",
          "price": 129.95
           }
      },
    "Total": 459.89
}

我想循环遍历 basket['Item'] 中的对象,但 JSON 本身并没有提供数组来执行此操作,循环遍历 basket['item'] 中的对象的最佳方法是什么?

【问题讨论】:

标签: javascript arrays json


【解决方案1】:

您可以使用Object.keys() 获取对象的所有属性名称,然后使用Array.prototype.forEach() 对其进行迭代:

 Object.keys(basket.Item).forEach(function(key) {
      console.log(item);
      console.log(basket.Item[key]);
 });

【讨论】:

    【解决方案2】:

    您可以为此使用for...in

    var obj = {
      cat: 'meow',
      dog: 'woof'
    }
    
    for (attr in obj) {
      console.log(attr + ': ' + obj[attr])
    }
    

    哪个会适当记录:

    cat: meow
    dog: woof
    

    这是您的对象的JSFiddle

    您也可以使用 Object.keys() 但它仅在 IE >= 9 中受支持。

    【讨论】:

      【解决方案3】:

      你可以使用for in:

      for (var property in basket['Item']) {
          var value = basket['Item'][property];
          console.log(property + ':');
          console.dir(value);
      }
      

      【讨论】:

        猜你喜欢
        • 2016-07-28
        • 1970-01-01
        • 2015-06-27
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        相关资源
        最近更新 更多