数据拼接 存在一对多关系

在 l push 对象的时候 是push的引用值 为了保证每一次 puhs的都是不同的对象 需要通过 JSON 做一个深拷贝
这里我解决了 但是一直在蒙 在 push之前 打印 出来的 item数据 每个都是不相同的 其实就是深拷贝的问题
最后使用 lodash 排序 输出结果

(12) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {name: “1”, age: 18, message: “成年”}
1: {name: “1”, age: 18, message: “你刚成年”}
2: {name: “1”, age: 18, message: “成年快乐”}
3: {name: “2”, age: 30, message: “结婚”}
4: {name: “3”, age: 17}
5: {name: “4”, age: 18, message: “成年”}
6: {name: “4”, age: 18, message: “你刚成年”}
7: {name: “4”, age: 18, message: “成年快乐”}
8: {name: “5”, age: 17}
9: {name: “6”, age: 18, message: “成年”}
10: {name: “6”, age: 18, message: “你刚成年”}
11: {name: “6”, age: 18, message: “成年快乐”}
length: 12

<script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.js"></script>
    <script>
       const obj1 = [{ name:'1' , age : 18},{ name:'2' , age : 30},{ name:'3' , age : 17},{ name:'4' , age : 18},{ name:'5' , age : 17},{ name:'6' , age : 18},]
       const list = [  { age:18, message : '成年'} , { age:30, message : '结婚'}, { age:18, message : '你刚成年'} , { age:18, message : '成年快乐'} ,] 
       const l = []
       obj1.map( ob => {
            let i =0;
            list.forEach( el => {
                if ( el.age === ob.age ){
                    i+=1;
                    if ( i === 1){
                        ob.message = el.message
                    }else{


                        // 1  正常实现
                        const it = JSON.stringify(ob)
                        const item = JSON.parse(JSON.stringify(ob))


                        // 2  存在地址引用问题
                        // const item = ob;


                        item.message = el.message
                        l.push(item);
                    }
                    
                }
            })

        return ob;
       })
       const arr = obj1.concat(l)
        const arr1 = _.sortBy(arr, [ 'name' , 'age' ])
       console.log(arr1);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值