js数组对象,存在项id一致的数据,需要将该项的name进行数据拼接

文章讲述了如何使用JavaScript的数组方法(如sort,reduce,forEach)对包含特定属性的对象数组进行处理,将具有相同属性值的对象进行合并,将name属性值拼接,并保留一个packGoodsId。
摘要由CSDN通过智能技术生成
	//原数据
   let newArr = [
                  {name: '相当精准包(10分钟)', packGoodsId: 301},
                  {name: '相当精准包(12分钟)', packGoodsId: 301},
                  {name: '相当精准包(11分钟)', packGoodsId: 301},
                  {name: '相当精准包(20分钟)', packGoodsId: 303},
                  {name: '相当精准包(20分钟)', packGoodsId: 303},
           ];
  //需要转成下面格式。,在每个packGoodsId为一致的时候,把name拼接下来,保留一个packGoodsId
 packTypeList: [
      { "packGoodsId": 301, "name": "相当精准包(10分钟),相当精准包(11分钟),相当精准包(12分钟)" },
      { "packGoodsId": 303, "name": "相当精准包(20分钟),相当精准包(20分钟)" },
   ],
方法一:
 const newArray = newArr.sort((a, b) => { return a.packGoodsId - b.packGoodsId }).reduce((init, cur, index, arr) => {
                            if (init.length > 0) {
                                for (let key in { name: '' }) {
                                    if (init[init.length - 1].packGoodsId == cur.packGoodsId) {
                                        init[init.length - 1].name += ' , '+ cur.name 
                                    } else {
                                        init.push(cur);
                                    }
                                    console.log(cur,'cur')
                                }
                            } else {
                                init.push(cur);
                            }
                            console.log(init,'init')
                            return init
                        }, [])
                        console.log(newArray,'newArray')
方法二
	  					let packGoodsIdList = [];
                        let newArrList = [];
                        newArr.forEach((item) => {
                            if (packGoodsIdList.indexOf(item.packGoodsId) == -1) {
                                packGoodsIdList.push(item.packGoodsId)
                            }
                        })
                        packGoodsIdList.forEach((item, index) => {
                            let ojb = {
                                packGoodsId: item,
                                name: ''
                            }
                            newArr.forEach(items => {
                                if (item == items.packGoodsId) {
                                    ojb.name += items.name + '  '
                                }
                            })
                            newArrList.push(ojb)
                        })
                      console.log(newArrList ,'newArrList ')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值