js將數(shù)組對(duì)象中某個(gè)值相同的對(duì)象合并成一個(gè)新對(duì)象并把這個(gè)對(duì)象插入到數(shù)組當(dāng)中

一般開發(fā)的時(shí)候,后端返回的數(shù)據(jù)格式并不是自己想要的,因此就需要自己對(duì)后端傳過(guò)來(lái)的數(shù)據(jù)進(jìn)行組合并賦值給一個(gè)新的數(shù)組/對(duì)象,今天我遇到一個(gè)問(wèn)題就是后端把訂單的數(shù)據(jù)分成單獨(dú)的數(shù)組一個(gè)個(gè)返回,大家都知道訂單 不一定是只有一個(gè)商品,也有會(huì)有多個(gè)商品,但是后端并沒(méi)有給我們把相同的訂單組合成我們想要的數(shù)據(jù)格式,因此我在前端做了一個(gè)數(shù)據(jù)的重組,
一開始我把訂單編號(hào)(order_sn)抽離出來(lái)賦值給一個(gè)定義好的數(shù)組,接下來(lái)上代碼:

let data = [
    {
        name: '商品名',
        id: 0,
        order_sn: '12343265253'
    },
    {
        name: '商品名1',
        id: 1,
        order_sn: '12343265253'
    },
    {
        name: '商品名'2,
        id: 2,
        order_sn: '12343265252'
    },
    {
        name: '商品名3',
        id: 3,
        order_sn: '12343265252'
    },
]

以上是我寫的假數(shù)據(jù),以order_sn為例:
為什么要加多一個(gè)order_sn的聲明呢?
因?yàn)槿绻患佣嘁粋€(gè)order_sn的話,list會(huì)重復(fù)push(order_sn)

let order_sn = [];
data.map(item => {
  if(order_sn.indexOf(item.order_sn) === -1){
    list.push({
      order_sn: item.order_sn,
      goodsList: []
    });
    order_sn.push(item.order_sn)
  }
});

這里把order_sn抽離出來(lái),并提前賦值到新的數(shù)組(list)當(dāng)中,

list.map(item => {
 data.map(items => {
    if(item.order_sn == items.order_sn){
      item.goodsList.push(items)
    }
  })
})

然后再把相同的訂單編號(hào)的訂單push到list當(dāng)中定義好的goodsList當(dāng)中,這樣當(dāng)我們需要對(duì)訂單頁(yè)進(jìn)行數(shù)據(jù)渲染時(shí),能夠根據(jù)對(duì)應(yīng)的訂單號(hào)渲染出我們需要的效果

下面是合并后的結(jié)果:

list=[
    {
        order_sn: '12343265253',
        goodsList: [
            {
                name: '商品名',
                id: 0,
                order_sn: '12343265253',
            },
            {
                name: '商品名1',
                id: 1,
                order_sn: '12343265253',
            },
        ]
    },
    {
        order_sn: '12343265252',
        goodsList: [
            {
                name: '商品名'2,
                id: 2,
                order_sn: '12343265252'
            },
            {
                name: '商品名3',
                id: 3,
                order_sn: '12343265252'
            },
        ]
    }
]

如果此文對(duì)你有用請(qǐng)動(dòng)動(dòng)你的小手點(diǎn)個(gè)贊!謝謝!??!

?著作權(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ù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

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

  • 一、數(shù)組定義 array() 1、索引數(shù)組 在一個(gè)變量中,存儲(chǔ)一個(gè)或多個(gè)值。數(shù)組中的每一個(gè)元素都有一個(gè)訪問(wèn)ID,根...
    竹與豆閱讀 580評(píng)論 0 0
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,658評(píng)論 1 32
  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁(yè)的形式展示給用戶的,因此網(wǎng)頁(yè)是網(wǎng)絡(luò)信息傳遞的載體。網(wǎng)頁(yè)文件是用...
    阿啊阿吖丁閱讀 4,952評(píng)論 0 0
  • 雞年過(guò)的很頹廢,同當(dāng)初下定決心離開一樣,同樣是下個(gè)很大的決心才回的杭州,可能少了很多期待,生活反倒過(guò)的順暢很...
    lily北媽閱讀 525評(píng)論 1 2
  • 一、 必須先聲明(申請(qǐng)一塊內(nèi)存空間)
    liyuhong閱讀 433評(píng)論 0 1

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