首页 > 解决方案 > 如何根据特定字段从 JSON 中获取不同的记录

问题描述

我有 JSON 记录。其中名称字段有许多重复记录。根据名称,我想获得不同的记录。这是我的数据

{
    "name": "ABER",
    "value":72,
},
{
    "name": "HDCC",
    "value":72,
},
{
    "name": "HDCC",
    "value":72,
},
{
    "name": "OCL",
    "value":42,
},
{
    "name": "OCL",
    "value":42,
},

我正在寻找的这个输出

{
    "name": "OCL",
    "value":42,
},
{
    "name": "ABER",
    "value":72,
},
{
    "name": "HDCC",
    "value":72,
},

我试过了,但它只是返回name字段而value不是

var op= Array.from(new Set(obj.map((item: any) => item.name)))

我怎样才能做到这一点

标签: javascripttypescript

解决方案


您可以使用 Array.reduce 来获得所需的结果,如下所示:

let a = [{
    "name": "ABER",
    "value":72,
},
{
    "name": "HDCC",
    "value":72,
},
{
    "name": "HDCC",
    "value":72,
},
{
    "name": "OCL",
    "value":42,
},
{
    "name": "OCL",
    "value":42,
}]

let result = Object.values(a.reduce((res, el) => { 
    res[el.name] = { ...el, count: res[el.name] ? res[el.name].count + 1: 0};
    return res;
}, {}));

console.log(result);


推荐阅读