gpt4 book ai didi

javascript - 在考虑相同值的键的同时将数组转换为对象

转载 作者:行者123 更新时间:2023-11-30 06:21:18 24 4
gpt4 key购买 nike

我正在尝试找出一种将对象数组转换为对象的简单方法

我有一个看起来像这样的对象数组:

   [
{
"id": "-LP9_kAbqnsQwXq0oGDT",
"value": Object {
"date": 1541482236000,
"title": "First",
},
},
.... more objects here
]

而id喜欢将其转换为以时间戳为键的对象,以及对应于该日期的对象数组。如果该键已经存在,则将对象添加到与该键关联的相应数组

 {
1541482236000:
[{
"id": "-LP9_kAbqnsQwXq0oGDT",
"value": Object {
"date": 1541482236000,
"title": "First",
},
},
{
"id": "-LP9_kAbqnsQwXqZZZZ",
"value": Object {
"date": 1541482236000,
"title": "Some other title",
},
},
.... more objects here
],
1541482236001:
[{
"id": "-LP9_kAbqnsQ1234",
"value": Object {
"date": 1541482236001,
"title": "Another title",
},
},

.... more objects here
]
}

我能够使用 reduce 实现类似的效果。但是,当对象的键已经存在时,它不会处理将对象添加到数组中的问题。

calendarReminders = action.value.reduce((obj, reminder) => {
dateKey = moment(reminder.value.date).format('YYYY-MM-DD')
obj[dateKey] = [reminder]
return obj;
}, {});

我该怎么做?

最佳答案

您只需要检查对象是否已经是键,如果不是,则将其添加到数组中。然后你可以 push() 进去:

let arr = [{"id": "-LP9_kAbqnsQwXq0oGDT","value":  {"date": 1541482236000,"title": "First",},},{"id": "SomID","value":  {"date": 1541482236000,"title": "Some other title",},},{"id": "A different ID","value":  {"date": 1541482236001,"title": "A third title",},}]

let calendarReminders = arr.reduce((obj, reminder) => {
(obj[reminder.value.date] || (obj[reminder.value.date] = [])).push(reminder)
return obj;
}, {});
console.log(calendarReminders)

如果你想在 moment 中将键设置为不同的格式,你应该能够在不改 rebase 本思想的情况下做到这一点。

关于javascript - 在考虑相同值的键的同时将数组转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52901427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com