一般開發(fā)的時(shí)候,后端返回的數(shù)據(jù)格式并不是自己想要的校哎,因此就需要自己對后端傳過來的數(shù)據(jù)進(jìn)行組合并賦值給一個(gè)新的數(shù)組/對象两波,今天我遇到一個(gè)問題就是后端把訂單的數(shù)據(jù)分成單獨(dú)的數(shù)組一個(gè)個(gè)返回,大家都知道訂單 不一定是只有一個(gè)商品闷哆,也有會有多個(gè)商品腰奋,但是后端并沒有給我們把相同的訂單組合成我們想要的數(shù)據(jù)格式,因此我在前端做了一個(gè)數(shù)據(jù)的重組抱怔,
一開始我把訂單編號(order_sn)抽離出來賦值給一個(gè)定義好的數(shù)組劣坊,接下來上代碼:
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會重復(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抽離出來,并提前賦值到新的數(shù)組(list)當(dāng)中灌危,
list.map(item => {
data.map(items => {
if(item.order_sn == items.order_sn){
item.goodsList.push(items)
}
})
})
然后再把相同的訂單編號的訂單push到list當(dāng)中定義好的goodsList當(dāng)中康二,這樣當(dāng)我們需要對訂單頁進(jìn)行數(shù)據(jù)渲染時(shí),能夠根據(jù)對應(yīng)的訂單號渲染出我們需要的效果
下面是合并后的結(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'
},
]
}
]
如果此文對你有用請動動你的小手點(diǎn)個(gè)贊勇蝙!謝謝D稹!味混!