我有一个对象数组这些对象来自我表单上的两个不同的输入字段。它们由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"}]
答案 0 :(得分:3)
在这种情况下,你需要使用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