基于对象属性AngularJS将数组拆分为2

时间:2017-12-05 12:51:31

标签: arrays angularjs

我有一个对象数组这些对象来自我表单上的两个不同的输入字段。它们由ID标识。

字段1是id:1,字段2是id:2。如何根据其ID将它们分成两个数组。例如id:1个对象存储在array1中,id:2存在于array2中。我不想硬编码,好像创建了更多的输入字段,这会使一些混乱。

"values":[{"id":"1","description":"123"},
          {"id":"1","description":"456"},
          {"id":"2","description":"456"}]

2 个答案:

答案 0 :(得分:3)

在这种情况下,你需要使用groupBy作为过滤器,如果你有兴趣弄清楚它是如何工作的那么读它

angular-filter#groupby

  

<强>记住   你不需要制作一个新的过滤器或其他模型来处理它只是使用它! 节省您的时间

但解决方案非常简单:

var result = $filter("groupBy")(values, 'id');
//this result will return 1: [{"id":"1","description":"123"},{"id":"1","description":"456"}] & 2: [{"id":"2","description":"456"}]
for(var item in result){
   //item return all keys (ids) => 1, 2
   //result[item] return all objects related to a key OR id
   //so you can do anything here
}

答案 1 :(得分:1)

您可以使用设置生成唯一标识的列表。然后,使用 array.prototype.reduce 以及 array.prototype.filter ,您可以动态构建一个对象,该对象包装每个id的所有生成的数组:

borrow_mut