Javascript 按键和交换值进行双对象搜索
我想从objectA值替换objectB键。 在交换之前,objectA和ObjectB键应该在每个对象中匹配。 然后在objectC中返回数据 我看到了这个线程,但我只想在交换键和值之前匹配键。 像这样Javascript 按键和交换值进行双对象搜索,javascript,arrays,dictionary,ecmascript-5,Javascript,Arrays,Dictionary,Ecmascript 5,我想从objectA值替换objectB键。 在交换之前,objectA和ObjectB键应该在每个对象中匹配。 然后在objectC中返回数据 我看到了这个线程,但我只想在交换键和值之前匹配键。 像这样 var objA ={100:'new',200:'in progress',300:'done',500:'exception',225:'critical'}; var objB ={100:12,200:5,300:50}; objectA和objectB具有相同的密钥 obj
var objA ={100:'new',200:'in progress',300:'done',500:'exception',225:'critical'};
var objB ={100:12,200:5,300:50};
objectA和objectB具有相同的密钥
objectA键是statusID,其值类似于为用户显示statusID名称
objectB键是statusID,值是statusID count。因此,此计数值是示例
首先,我希望objectA和objectB密钥匹配。这次,100200300是相同的密钥
如果它们匹配,则匹配objectA键的值替换objectB键。
如键100匹配,objectB键100应变为“新建”。最后,objectC结果应该是这样的
var objC ={'new':12,'in progress':5,'done':50};
欢迎提出任何建议。
感谢阅读。您应该将此视为创建一个新对象,该对象将来自其他两个对象的数据组合在一起。您可以通过在
objB
中的键数组上调用reduce()
来执行所需操作:
objC = objB.keys().reduce(result, key => {
result[objA[key]] = objC[key];
return result;
});
见鬼,我不知道你在干什么-
const heck=(a={},b={})=>
对象
.entries(a)//使用来自任一对象的所有条目。。。
.减少//减少每个。。。
((r[k,v])=>//结果、r和键/值对
b[k]==未定义//如果键在其他对象中不存在
?r//继续当前结果
:{…r[v]:b[k]}//否则使用新的键/值扩展结果
,{}//初始结果
)
康斯特奥布贾=
{100:'new',200:'progress',300:'done',500:'exception',225:'critical'}
常数objB=
{100:12, 200:5, 300:50}
控制台日志(heck(objA,objB))
//{“新”:12
//,“进行中”:5
//“完成”:50
//}
天真地分配结果[objA[key]]
其中objA[key]
可能是未定义的
@user633183是的,我是根据OPs示例字典中的一些假设编写的。更健壮的代码将检查未定义的值。