js將數(shù)組對(duì)象中某個(gè)值相同的對(duì)象合并成一個(gè)新對(duì)象

原數(shù)組:
var beforeData= [
    { name: "tony", id: "1", age: "20" },
    { name: "jack", id: "2", age: "21" },
    { name: "tony", id: "3", age: "50" },
    { name: "jack", id: "4", age: "10" },
    { name: "mark", id: "5", age: "22" },
    { name: "mark", id: "6", age: "40" }
];
最終數(shù)組:
 afterData= [
    {name: "tony",origin: [{ name: "tony", id: "1", age: "20" },{ name: "tony", id: "3", age: "50" }]},
    {name: "jack",origin: [{ name: "jack", id: "2", age: "21" },{ name: "jack", id: "4", age: "10" }]},
    {name: "mark",origin: [{ name: "mark", id: "5", age: "22" },{ name: "mark", id: "6", age: "40" }]}
]

實(shí)現(xiàn)方法:

第一種方法:
  var afterData = []
  let tempArr = []
  for (let i = 0; i < beforeData.length; i++) {
    if (tempArr.indexOf(beforeData[i].name) === -1) {
      this.afterData.push({
        name: beforeData[i].name,
        origin: [beforeData[i]]
      })
      tempArr.push(beforeData[i].name)
    } else {
      for (let j = 0; j < this.afterData.length; j++) {
        if (this.afterData[j].name == beforeData[i].name) {
          this.afterData[j].origin.push(beforeData[i])
          break
        }
      }
    }
  }
  console.log(this.afterData);
第二種方法:
  let afterData = []
  let tempArr = []
  beforeData.map(item => {
    if (tempArr.indexOf(item.name) === -1) {
      afterData.push({
        name: item.name,
        origin: []
      });
      tempArr.push(item.name)
    }
  });
  afterData.map(item => {
    beforeData.map(items => {
      if (item.name == items.name) {
        item.origin.push(items)
      }
    })
  })
  console.log(afterData)
第三種方法:
  var afterData = []
  beforeData.forEach(item => {
    let flag = afterData.find(item1 => item1.name === item.name)
    if (!flag) {
      afterData.push({
        name: item.name,
        origin: [item]
      })
    } else {
      flag.origin.push(item)
    }
  })
  console.log(afterData)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容