如何从角度数组中获取唯一行

时间:2019-01-07 17:29:06

标签: javascript angular

我有一个包含一些重复对象的集合,我想要过滤器数组并获得唯一的集合 这是我的数组

renderSpacedBitmapString()

我想像下面这样过滤

array=[{id:1,name:'A'},{id:2,name:'B'},{id:3,name:'C'},{id:1,name:'A'},{id:3,name:'C'}];

我在上面尝试过并且获得了唯一的值,但是我想要完整的对象

4 个答案:

答案 0 :(得分:0)

您可以在reduce的帮助下完成

let arr=[{id:1,name:'A'},{id:2,name:'B'},{id:3,name:'C'},{id:1,name:'A'},{id:3,name:'C'}];

let op = Object.values(arr.reduce((o,c)=>{
  if(!o[c.id]) o[c.id] = c;
  return o; }, {} ))

console.log(op);

答案 1 :(得分:0)

您可以按以下方式使用arrray.filter,

var unique = {}
var array=[{"id":1,"name":'A'},{"id":"2","name":'B'},{"id":3,"name":'C'},{"id":1,"name":'A'},{"id":3,name:'C'}];
var arrFiltered = array.filter(obj => !unique[obj.id] && (unique[obj.id] = true));
console.log(arrFiltered)

答案 2 :(得分:0)

我认为你快到了。只需将对象而不是ID添加到数组即可,即:

Failed to send request: {"jsonrpc":"2.0","id":"9354","method":"getVM","params":{}}

如果我理解您的问题,应该这样做。

答案 3 :(得分:0)

将 Id 替换为数组的相应键。

arrayUnique(array)
{
    let result:any=[];
    let compare:any=[]; 
    array.forEach((val,ind)=>{
        if(!compare.includes(val.id))
        {
            compare.push(val.id);
            result.push(val);  
        }
    });
    console.log(result);  
}