js将数组对象中某个值相同的对象合并成一个新对象并把这个对象插入到数组当中

一般开发的时候,后端返回的数据格式并不是自己想要的,因此就需要自己对后端传过来的数据进行组合并赋值给一个新的数组/对象,今天我遇到一个问题就是后端把订单的数据分成单独的数组一个个返回,大家都知道订单 不一定是只有一个商品,也有会有多个商品,但是后端并没有给我们把相同的订单组合成我们想要的数据格式,因此我在前端做了一个数据的重组,
一开始我把订单编号(order_sn)抽离出来赋值给一个定义好的数组,接下来上代码:

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'
	},
]

以上是我写的假数据,以order_sn为例:
为什么要加多一个order_sn的声明呢?
因为如果不加多一个order_sn的话,list会重复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抽离出来,并提前赋值到新的数组(list)当中,

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

然后再把相同的订单编号的订单push到list当中定义好的goodsList当中,这样当我们需要对订单页进行数据渲染时,能够根据对应的订单号渲染出我们需要的效果

下面是合并后的结果:

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'
			},
		]
	}
]

如果此文对你有用请动动你的小手点个赞!谢谢!!!

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值