Javascript比较生成新对象的两个对象键

Javascript比较生成新对象的两个对象键,javascript,arrays,object,ecmascript-6,lodash,Javascript,Arrays,Object,Ecmascript 6,Lodash,我有两个目标。如果一个关键点出现在两个对象中,我希望第一个对象的值作为关键点,第二个对象的值作为值 var obj1 = {a:"value1",b:"value2",c:"value3"} var obj2 = {a:"index1",b:"index2",c:"index3",d:"index4"}; 输出应如下所示: {"value1":"index1","value2":"index2","value3":"index3"} 如何操作?从第一个对象获取条目([key,value]),

我有两个目标。如果一个关键点出现在两个对象中,我希望第一个对象的值作为关键点,第二个对象的值作为值

var obj1 = {a:"value1",b:"value2",c:"value3"}
var obj2 = {a:"index1",b:"index2",c:"index3",d:"index4"};
输出应如下所示:

{"value1":"index1","value2":"index2","value3":"index3"}
如何操作?

从第一个对象获取条目([key,value]),如果键也存在于
obj2
中,则使用reduce与第二个对象的值组合:

const obj1={a:“value1”,b:“value2”,c:“value3”};
常量obj2={a:“index1”,b:“index2”,c:“index3”,d:“index4”};
const result=Object.entries(obj1)//获取条目
.减少((r[k,v])=>{
if(obj2中的k){//如果该键存在于obj2中
r[v]=obj2[k];//使用obj1中的值作为键,使用obj2中的值
}
返回r
}, {});

控制台日志(结果)遍历obj1的键,并使用obj1的值作为键,使用obj2的值作为值

const obj1={a:“value1”,b:“value2”,c:“value3”}
常量obj2={a:“index1”,b:“index2”,c:“index3”,d:“index4”};
const newObj={};
用于(输入obj1)
如果(obj2[键])
newObj[obj1[key]]=obj2[key];
console.log(newObj)
var obj1={a:value1',b:value2',c:value3}
变量obj2={a:“index1”,b:“index2”,c:“index3”,d:“index4”};
/*迭代obj1的所有道具*/
const result=Object.keys(obj1).reduce(acc,obj1Prop)=>{
/*如果obj2[propObj1的值]未定义*/
if(obj2[obj1Prop]的类型!=“未定义”){
//将obj2的值[propObj1的值]分配给累加器
acc[obj1[obj1Prop]]=obj2[obj1Prop];
}
返回acc;
},{})
//结果包含结果
console.log(结果)
var obj1={a:value1',b:value2',c:value3}
变量obj2={a:“index1”,b:“index2”,c:“index3”,d:“index4”};
var obj={};
用于(让我输入obj1){
if(对象J2.hasOwnProperty(i))
obj[obj1[i]]=obj2[i];
}

log(obj)
但是您没有比较键是否匹配,您假设它们是相同的,如果是呢not@OnerT. 编辑内容以检查密钥匹配您可以使用
if(obj2.hasOwnProperty(i))
if(obj2中的i)
而不是创建密钥数组,并为每个
i
检查
包含
!这很直截了当。将编辑它,谢谢!