javascript - 在 Angular JS Controller 中遍历复杂的 JSON 数组并显示特定值

标签 javascript angularjs json

{
   "products":[
      {
         "recommendation":{
            "currentLevel":79,
            "maxLevel":100
         },
         "items":[
            {
               "id":"10600",
               "title":"Hampton Cookset - 8 Piece",
               "category":"STAINLESS STEEL",
               "imageUrl": "http://localhost/img/001.jpg",
               "unitsInCartons": 10,
               "unitCost":4.52,
               "packSize":10,
               "secondaryCategory":"Chairs"
            }
         ]
      },
      {
         "recommendation":{  
            "currentLevel":79,
            "maxLevel":100
         },
         "items":[  
            {  
               "id":"10870",
               "title":"MELAMINE BOWL",
               "category":"BOWLS",
               "imageUrl":"http://localhost/img/001.jpg",
               "unitsInCartons":6,
               "unitCost":0.93,
               "packSize":5,
               "secondaryCategory":"Kids Home"
            },
            {  
               "id":"10820",
               "title":"PP YUM YUM CUP",
               "category":"CUPS/MUGS",
               "imageUrl":"http://localhost/img/002.jpg",
               "unitsInCartons":12,
               "unitCost":0.7,
               "packSize":25,
               "secondaryCategory":"Kids Home"
            }
         ]
      }
   ]
}

我正在尝试遍历上述 JSON 代码,我的目标是显示所有 titlecategoryunitsInCartonunitCostpackSize 值在 Angular JS 中以表格的形式显示在 View 中。

我是 Angular 的新手,希望获得一些关于如何准确迭代以完成我的任务的指导。

最佳答案

您可以使用 Angular 嵌套 ng-repeat 来完成它,但这对性能不利。我建议首先解析数据以获得预期的格式,然后只使用一个 ng-repeat

对产品和项目使用 .map 函数,我能够输出预期的结果(通过在最后展平结果)。

var data = {
   "products":[
      {
         "recommendation":{
            "currentLevel":79,
            "maxLevel":100
         },
         "items":[
            {
               "id":"10600",
               "title":"Hampton Cookset - 8 Piece",
               "category":"STAINLESS STEEL",
               "imageUrl": "http://localhost/img/001.jpg",
               "unitsInCartons": 10,
               "unitCost":4.52,
               "packSize":10,
               "secondaryCategory":"Chairs"
            }
         ]
      },
      {
         "recommendation":{  
            "currentLevel":79,
            "maxLevel":100
         },
         "items":[  
            {  
               "id":"10870",
               "title":"MELAMINE BOWL",
               "category":"BOWLS",
               "imageUrl":"http://localhost/img/001.jpg",
               "unitsInCartons":6,
               "unitCost":0.93,
               "packSize":5,
               "secondaryCategory":"Kids Home"
            },
            {  
               "id":"10820",
               "title":"PP YUM YUM CUP",
               "category":"CUPS/MUGS",
               "imageUrl":"http://localhost/img/002.jpg",
               "unitsInCartons":12,
               "unitCost":0.7,
               "packSize":25,
               "secondaryCategory":"Kids Home"
            }
         ]
      }
   ]
};

var items = data.products.map(function (product) {
  return product.items.map(function (item) {
   return {
      title: item.title,
      category: item.category,
      unitsInCarton: item.unitsInCarton,
      unitCost: item.unitCost,
      packSize: item.packSize,
    };
  });
});

items = [].concat.apply([], items);

console.log(items);

关于javascript - 在 Angular JS Controller 中遍历复杂的 JSON 数组并显示特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43513050/

相关文章:

javascript - DOM 树中的这个节点 "object Text"是什么?

html - 使用 ng-repeat 时如何在对齐的行中显示复选框?

javascript - AngularJs:如何解码 HTML 中的 HTML 实体?

javascript - 迭代多个 ng-model

jquery - 为什么 MVC3 不绑定(bind)这个(JSON)

javascript - JS Bitwise - Math.random() * 2 被解释为 0 和 1 以进行按位或 (|) 运算的规则是什么?

javascript - 一个类中有多个构造函数。 JavaScript

javascript - 云函数已触发,但未执行

json - 如何在 matchCondition 中路由所有内容?

javascript - D3 错误 - 未捕获的 TypeError : Cannot read property 'children' of undefined