一般開發(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è)贊!謝謝!??!