猿问

如何从当前数组创建嵌套数组?

如何根据数组中的值将此数组转换为新的嵌套数组


当前阵列


[{

 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'

}]

想做这个嵌套数组


[{

 book: 'Jungle Book',

 comment: [{

   name: 'Jake',

   review: 'Would read again'

  },

  {

   name: 'John',

   review: 'Its great'   

  }]

},

{

 book: 'Coding Standards',

 comment: [{

   name: 'Chris',

   review: 'Love it'

  },

  {

   name: 'Steve',

   review: 'Learned a lot'   

  }]

}]

任何帮助或提示将不胜感激。


温温酱
浏览 184回答 2
2回答

森栏

您的预期结果不是有效的。我认为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; }

九州编程

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 使用。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答