Javascript 向数组和对象数组中的公共项添加属性
我有一个像Javascript 向数组和对象数组中的公共项添加属性,javascript,arrays,ecmascript-6,javascript-objects,Javascript,Arrays,Ecmascript 6,Javascript Objects,我有一个像['A','B','F']这样的数组和一个对象数组 [ { name:'A', prop1:'value1' }, { name:'C', prop3:'value3' }, { name:'E', prop7:'value7' }, ] 我想筛选出数组中存在名称的对象,并将属性exists:true添加到对象数组中,然后返回更新后的对象数
['A','B','F']
这样的数组和一个对象数组
[
{
name:'A',
prop1:'value1'
},
{
name:'C',
prop3:'value3'
},
{
name:'E',
prop7:'value7'
},
]
我想筛选出数组中存在名称的对象,并将属性exists:true
添加到对象数组中,然后返回更新后的对象数组
因此,对于上述情况,它应该返回
[
{
name:'A',
prop1:'value1',
exists:true
},
{
name:'C',
prop3:'value3'
},
{
name:'E',
prop7:'value7'
},
]
我想这可以在JavaScript集的帮助下完成,但不确定如何完成。这也可以在线性复杂度中实现吗?要实现线性时间复杂度,可以将角色数组转换为一个集合。现在只需在对象数组中循环
const characters=['A','B','F'];
常量对象=[
{
姓名:'A',
prop1:'value1'
},
{
姓名:'C',
prop3:“value3”
},
{
姓名:'E',
prop7:“value7”
},
];
常量字符集=新集合(字符);
常量输出=objects.map(obj=>{
如果(charSet.has(obj.name))obj.exists=true;
返回obj;
});
这需要
O(n+m)
,其中n是字符数组的长度,m是对象数组的长度。要实现线性时间复杂度,可以将字符数组转换为一个集合。现在只需在对象数组中循环
const characters=['A','B','F'];
常量对象=[
{
姓名:'A',
prop1:'value1'
},
{
姓名:'C',
prop3:“value3”
},
{
姓名:'E',
prop7:“value7”
},
];
常量字符集=新集合(字符);
常量输出=objects.map(obj=>{
如果(charSet.has(obj.name))obj.exists=true;
返回obj;
});
这需要
O(n+m)
,其中n是字符数组的长度,m是对象数组的长度。这很有用。谢谢,这很有帮助。谢谢