按字段值对数组进行分组并将分组值推送到数组中

我有一个数组:


let docArray = [ 

    { documentID: 304717110, doublettenID: 111, done: true },

  { documentID: 304717110, doublettenID: 222, done: true },

  { documentID: 304717110, doublettenID: 333, done: true },

  { documentID: 304717110, doublettenID: 444, done: true },

  { documentID: 304717110, doublettenID: 555, done: true },

  { documentID: 304717110, doublettenID: 666, done: true },

  { documentID: 304862280, doublettenID: null, done: true },

  { documentID: 304862281, doublettenID: null, done: true },

  { documentID: 304933685, doublettenID: null, done: true },

  { documentID: 304933871, doublettenID: null, done: true },

  { documentID: 304933870, doublettenID: null, done: true },

  { documentID: 304862282, doublettenID: null, done: true } 

  ]

我想按 documentID 分组,并为每个不同的 documentID 创建一个对象,并将“doublettenID”字段值推送到每个对象的数组中。我怎样才能轻松做到这一点?


慕容森
浏览 115回答 3
3回答

呼如林

这是一种方法,我不确定这是否是您需要的对象格式。let docArray = [     { documentID: 304717110, doublettenID: 111, done: true },  { documentID: 304717110, doublettenID: 222, done: true },  { documentID: 304717110, doublettenID: 333, done: true },  { documentID: 304717110, doublettenID: 444, done: true },  { documentID: 304717110, doublettenID: 555, done: true },  { documentID: 304717110, doublettenID: 666, done: true },  { documentID: 304862280, doublettenID: null, done: true },  { documentID: 304862281, doublettenID: null, done: true },  { documentID: 304933685, doublettenID: null, done: true },  { documentID: 304933871, doublettenID: null, done: true },  { documentID: 304933870, doublettenID: null, done: true },  { documentID: 304862282, doublettenID: null, done: true }   ]    var ids = []  var res = []    docArray.forEach(doc => {       if (!ids.includes(doc.documentID)) {        doc.doublettenID = [doc.doublettenID]        res.push(doc)      ids.push(doc.documentID)    } else {        res.find(d => doc.documentID = d.documentID).doublettenID.push(doc.doublettenID)    } })  console.log(res)

红糖糍粑

您可以遍历它并将documentID用作键,然后推送到一个单独的对象。let docArray = [   { documentID: 304717110, doublettenID: 111, done: true },  { documentID: 304717110, doublettenID: 222, done: true },  { documentID: 304717110, doublettenID: 333, done: true },  { documentID: 304717110, doublettenID: 444, done: true },  { documentID: 304717110, doublettenID: 555, done: true },  { documentID: 304717110, doublettenID: 666, done: true },  { documentID: 304862280, doublettenID: null, done: true },  { documentID: 304862281, doublettenID: null, done: true },  { documentID: 304933685, doublettenID: null, done: true },  { documentID: 304933871, doublettenID: null, done: true },  { documentID: 304933870, doublettenID: null, done: true },  { documentID: 304862282, doublettenID: null, done: true } ];let groups = {};docArray.forEach(entry => {    if (!groups.hasOwnProperty(entry.documentID)) {    groups[entry.documentID] = [];    }    groups[entry.documentID].push(entry.doublettenID);});console.log(groups);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript