2 回答

TA贡献1810条经验 获得超5个赞
您的预期结果不是有效的。我认为comment这里需要一个对象数组,例如:
const temp = [{name:"John",review:"Its great",book:"Jungle Book"},{name:"Steve",review:"Learned a lot",book:"Coding Standards"},{name:"Chris",review:"Love it",book:"Coding Standards"},{name:"Jake",review:"Would read again",book:"Jungle Book"}];
const res = Object.values(temp.reduce((ac, { name, review, book }) => {
ac[book] = ac[book] || {book, comment: []}
ac[book].comment.push({name, review})
return ac;
}, {}));
console.log(res);
.as-console-wrapper { max-height: 100% !important; top: 0; }

TA贡献1785条经验 获得超4个赞
const arr = [{
name: 'John',
review: 'Its great',
book: 'Jungle Book'
},
{
name: 'Steve',
review: 'Learned a lot',
book: 'Coding Standards'
},
{
name: 'Chris',
review: 'Love it',
book: 'Coding Standards'
},
{
name: 'Jake',
review: 'Would read again',
book: 'Jungle Book'
}];
const result = arr.reduce(function (r, a) {
r[a.book] = r[a.book] || [];
r[a.book].push(a);
return r;
}, Object.create(null));
console.log(result);
你可以做我上面做的或者_.groupBy()
从 lodash 使用。
添加回答
举报