使用angular js将具有相同id的重复对象从json数据合并到单个对象中

时间:2016-11-17 15:30:37

标签: javascript jquery angularjs arrays json

我从api调用获取json数据,查找包含id,name,error_type和message的各种项目的错误列表。我需要显示一个包含项目名称和ID的标题,并在其下面列出属于该id的所有错误。我在角度使用独特的过滤器,但跳过具有相同ID的下一个对象。当id相同时,我想要一些合并对象属性的帮助。



var items =[ {    
    "id": 83739,
    "name": "abcd",
    "type": "error",
    "msg": "For Macros, x >= y"
},
{
    "id": 83739,
    "name": "abcd",
    "type": "warning",
    "msg": "Missing Power Condition"
},{
    "id": 83740,
    "name": "efgh",
    "type": "error",
    "msg": "Missing Power supply"
}]

<div ng-repeat="item in items | unique:'id'">
 <h4><a href="#/product/item/{{item.id}}">  {{io.item}}</a></h4>
 <ul>
   <li > {{item.type}}: {{item.msg}}</li>
 </ul>
</div>
&#13;
&#13;
&#13;

我需要的输出是这样的

&#13;
&#13;
<div>
  <h4><a href="#/product/item/83739"> abcd</a></h4>
  <ul>
    <li > error: For Macros, x >= y</li>
    <li > warning: Missing Power Condition</li>
   
  </ul>
</div>

<div>
  <h4><a href="#/product/item/83740}"> efgh</a></h4>
  <ul>
     <li > error: Missing Power supply</li>
  </ul>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

向你的li添加一个ng-repeat指令并应用一个过滤器,如下所示:

<li ng-repeat="i in items | filter: {id: item.id}"> {{i.type}}: {{i.msg}}</li>

在上下文中:

<div ng-repeat="item in items | unique:'id'">
   <h4>
      <a href="#/product/item/{{item.id}}">  {{io.item}}</a>
   </h4>
   <ul>
      <li ng-repeat="i in items | filter: {id: item.id}"> {{i.type}}: {{i.msg}}</li>
   </ul>
</div>

这是一个有效的plunk