首页 > 解决方案 > 按 JSON 键分组对象列表

问题描述

我正在尝试通过在 javascript 中对某个密钥对进行分组来重新格式化我的对象列表。

数据格式

[{
    "sccode": "sccode1",
    "val": "1ADA"
}, {
    "sccode": "sccode2",
    "val": "1ADB"
}, {
    "sccode": "sccode1",
    "val": "1ADC"
}]

预期结果

[{
        "scCode": "sccode1",
        "valCodes": ["1ADA", "1ADC"]
    }, 
{
        "scCode": "sccode2",
        "valCodes": ["1ADB"]
    }

]

我相信我可以循环遍历数组并匹配我的键,但是有没有一种快速的方法来重新格式化它而不必显式循环遍历?我尝试在下面使用 reduce 函数,但它给出了未定义的错误,我认为这与我的格式有关。

尝试过(?)代码

 const resp = data.reduce((acc, ele) => {
          const ant = acc.find(x => x.sccode === ele.sccode);
        }, []);

标签: javascripttypescript

解决方案


这行吗?

const src = [{"sccode":"sccode1","val":"1ADA"},{"sccode":"sccode2","val":"1ADB"},{"sccode":"sccode1","val":"1ADC"}],

    result = src.reduce((r,{sccode,val}) => {
      const match = r.find(({scCode}) => scCode == sccode)
      match ?
      match.valCodes.push(val) :
      r.push({scCode:sccode, valCodes: [val]})
      return r
    }, [])
    
console.log(result)
.as-console-wrapper{min-height:100%;}


推荐阅读