如何比较字段并将字段推送到对象中的子数组 [英] How to compare and push field to sub array in object

查看:44
本文介绍了如何比较字段并将字段推送到对象中的子数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含名称和ID的对象.第二个对象有一些字段,第一个对象有一个id字段.

I have an object which contain name and id. Second object has some fields and that id field from first object.

例如:

FirstObj = [{
  _id: '48765465f42424',
  Name : 'Sample'
},{
  _id: '48765465f654654',
  Name : 'Sample1'
}]
secondObj = [{
  Field1 : 5464,
  subarray : [{
        Field2 : 14654,
        Field3 : { IsActive : true,
                     FirstObjid : '48765465f42424'
                  },
        Field4 : { IsActive : true,
                     FirstObjid : '48765465f654654'
                  }
            }]
    },
    {
  Field1 : 2145,
  subarray : [{
        Field2 : 544644,
        Field3 : { IsActive : true,
                     FirstObjid : '48765465f654654'
                  },
        Field4 : { IsActive : true,
                     FirstObjid : '48765465f42424'
                  },
        }]
    }]

现在,我需要将两者进行比较,并将名称从 FirstObjid 字段旁边的第一个对象推送到 secondobj的subobj .

Now I need to compare both and push that name from first object to secondobj's subobj beside FirstObjid field .

预期输出为:

 secondObj = [{
  Field1 : 5464,
  subarray : [{
        Field2 : 14654,
        Field3 : { IsActive : true,
                     FirstObjid : '48765465f42424',
                    Name : 'Sample'
                  },
        Field4 : { IsActive : true,
                     FirstObjid : '48765465f654654',
                    Name : 'Sample1'
                  }
            }]
    },
    {
  Field1 : 2145,
  subarray : [{
        Field2 : 544644,
        Field3 : { IsActive : true,
                     FirstObjid : '48765465f654654',
                     Name : 'Sample1'
                  },
        Field4 : { IsActive : true,
                     FirstObjid : '48765465f42424',
                    Name : 'Sample'
                  },
        }]
    }]

我如何实现它.

推荐答案

使用 map 函数并比较对象ID

Use map function and compare the object ids like this

var secondObj =  [{
  Field1 : 5464,
  subarray : [{
        Field2 : 14654,
        Field3 : 'sfsadf',
        FirstObjid : '48765465f42424'
        }]
    },
    {
  Field1 : 2145,
  subarray : [{
        Field2 : 544644,
        Field3 : 'awrfsa',
        FirstObjid : '48765465f654654'
        }]
    }]
    
 var FirstObj = [{
  _id: '48765465f42424',
  Name : 'Sample'
},{
  _id: '48765465f654654',
  Name : 'Sample1'
}]

secondObj.subarray = secondObj.map(o => o.subarray.map(k=> FirstObj.map(l=> { 
  if(l._id == k.FirstObjid){
     k.Name = l.Name
  }
  return o;
})))
 

console.log(secondObj)

 

这篇关于如何比较字段并将字段推送到对象中的子数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆