打字稿:按对象的多维数组分组(按ID)

时间:2019-02-17 03:03:35

标签: javascript arrays typescript group-by reduce

我需要帮助实现以下函数定义:

我不知道如何处理多维数组

1 个答案:

答案 0 :(得分:2)

您可以使用reduceforEach

我们基于id和kepp创建密钥,并相应地将值推入。如果密钥已经存在,则将特定键的数据数组中的新条目推入,如果不存在,则添加带有值的新密钥。最后,我们从输出对象中取出值。

let data = [{date: 1552489200000, data: [{id: 1, value:100}, {id: 2, value: 101}]},{date: 1552575600000, data: [{id: 1, value:102}, {id: 2, value: 103}]},{date: 1552662000000, data: [{id: 1, value:104}]},]

let output = data.reduce((out,{date, data})=>{
  data.forEach(({id, value }) => {
    let data = {date,value}
    out[id] ? out[id].data.push(data) : out[id]={id,data:[data]}
  })
  return out
},{})

console.log(Object.values(output))