【问题标题】:Merge nested Array with same key javascript使用相同的键 javascript 合并嵌套数组
【发布时间】:2022-07-06 15:09:27
【问题描述】:

我要整理数组,得到这样的响应数组

let data = [
    {
        date: "2022-07-01T07:26:22",
        tips: [
            { id: 1 }
        ]
    },
    {
        date: "2022-07-01T12:05:55",
        tips: [
            { id: 1 }
        ]
    },
    {
        date: "2022-07-05T13:09:16",
        tips: [
            { id: 1 }
        ]
    },
    {
        date: "2022-07-05T13:31:07",
        tips: [
            { id: 1 }
        ]
    },
    {
        date: "2022-06-29T09:21:26",
        tips: [
            { id: 1 }
        ]
    }
]

想要的输出:

let data = [
    {
        '2022-07-01': [
            {
                tips: [
                    { id: 1 }
                ]
            },
            {
                tips: [
                    { id: 1 }
                ]
            },
        ]
    },
    {
        '2022-07-05': [
            {
                tips: [
                    { id: 1 }
                ]
            },
            {
                tips: [
                    { id: 1 }
                ]
            },
        ]
    },
    {
        '2022-06-29': [
            {
                tips: [
                    { id: 1 }
                ]
            },
        ]
    }
]

我需要以上述数组格式获取具有相同键的数据。我尝试了不同的方法来实现这一点,但没有得到正确的结果这是获得所需输出的最佳方法。

提前致谢!!!

【问题讨论】:

  • 你可以使用reduce来解决这个问题。但是那个末端结构很奇怪。除非绝对有必要以这种方式获得输出,否则您可以进一步改进输出结构
  • @cmgchess 尝试了这个解决方案,但不起作用!

标签: javascript arrays


【解决方案1】:

这是使用reduce 的解决方案。首先使用reduce 进行分组,然后使用Object.values 获取对象的值

let data = [    {        date: "2022-07-01T07:26:22",        tips: [            { id: 1 }        ]    },    {        date: "2022-07-01T12:05:55",        tips: [            { id: 1 }        ]    },    {        date: "2022-07-05T13:09:16",        tips: [            { id: 1 }        ]    },    {        date: "2022-07-05T13:31:07",        tips: [            { id: 1 }        ]    },    {        date: "2022-06-29T09:21:26",        tips: [            { id: 1 }        ]    }]

let res = Object.values(data.reduce((acc,{date,tips})=>{
  let key = date.substring(0,10)
  acc[key] = acc[key] || {[key]:[]}
  acc[key][key].push({tips})
  return acc
},{}))

console.log(res)
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 2021-01-29
    • 2013-06-11
    • 1970-01-01
    相关资源
    最近更新 更多