将对象的一部分提取到数组

时间:2018-04-18 09:42:12

标签: javascript json angular

我有数百个对象的数组,如下所示:

{
    "id" : 893,
    ....
    "responsable" : {
        "id" : 792,
        "version" : 13,
        "username" : "xxxxx@mail.es",
        "nombre" : "Peter",
        "apellido1" : "Murphy",
        "apellido2" : "XXX"
   }
}

在我的对象中,我有另一个“负责任”的对象。需要获取这些对象的数组,但每次只能获取一次(删除重复的)

1 个答案:

答案 0 :(得分:2)

您可以使用reduce将数据汇总到对象。并使用Object.values将对象转换为数组。

此示例将提取所有负责人并删除基于responsable.id

的重复项



let arr = [
{"id": 893,"responsable": {"id": 792,"version": 13,"username": "xxxxx@mail.es","nombre": "John","apellido1": "Murphy","apellido2": "XXX"}},
{"id": 894,"responsable": {"id": 793,"version": 13,"username": "xxxxx@mail.es","nombre": "Peter","apellido1": "Murphy","apellido2": "XXX"}},
{"id": 895,"responsable": {"id": 792,"version": 13,"username": "xxxxx@mail.es","nombre": "John","apellido1": "Murphy","apellido2": "XXX"}},
{"id": 896,"responsable": {"id": 794,"version": 13,"username": "xxxxx@mail.es","nombre": "Paul","apellido1": "Murphy","apellido2": "XXX"}}
];

let responsable = Object.values(arr.reduce((c, v) => Object.assign(c, {[v.responsable.id]: v.responsable}), {}));

console.log(responsable);