gpt4 book ai didi

javascript - 将对象数组设置为具有选定 id 的对象并将具有相同键的对象设置为数组?

转载 作者:行者123 更新时间:2023-12-01 00:49:10 25 4
gpt4 key购买 nike

我很难想出解决方案,所以我有一系列对象,例如:

const objectsArr = [
{ commment: 'hello world', bookId: '1'},
{ commment: 'foo world', bookId: '2'},
{ commment: 'bar world', bookId: '1'},
{ commment: 'bazz world', bookId: '2'},
]

你看我有一个外键 bookId,我希望它成为评论数组的键,我想将它转换成这样:

const objectBookIdKey = {
1: [{ commment: 'hello world', bookId: '1'}, { commment: 'bar world', bookId: '1'}],
2: [{ commment: 'foo world', bookId: '2'},{ commment: 'bazz world', bookId: '2'}],
}

我上面创建的对象使用 bookId 的属性,并且具有具有相同 bookId 的对象数组,我知道 lodash、ramda ,但我想在 js 中进行学习。我只是不知道该怎么做。有帮助吗?

最佳答案

您可以使用减少

  • 循环objectsArr
  • 使用bookId作为 key
  • 检查它是否已经存在于对象上,如果没有分配默认值,则推送该值,否则推送该值到现有对象上

const objectsArr = [{ commment: 'hello world', bookId: '1'},{ commment: 'foo world', bookId: '2'},{ commment: 'bar world', bookId: '1'},{ commment: 'bazz world', bookId: '2'},]

let op = objectsArr.reduce((op,inp) => {
op[inp.bookId] = op[inp.bookId] || []
op[inp.bookId].push(inp)
return op
},{})

console.log(op)

关于javascript - 将对象数组设置为具有选定 id 的对象并将具有相同键的对象设置为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57127386/

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