我有2个对象。
对象1:
{
"a": "XXXXX",
"b": "YYYYY",
"c": "ZZZZZ"
}
和Object2:
{
"a": "KKKKK",
"b": "LLLLL",
"c": "MMMMM"
}
具有相同的长度和相同的索引键,但是值不同。
结果应为:
{
"XXXXX": "KKKKK",
"YYYYY": "LLLLL",
"ZZZZZ": "MMMMM"
}
我尝试过:
for (let el in Object2){
el = Object1[el]
}
,但不起作用。我在做什么错了?
答案 0 :(得分:2)
const x = {
"a": "XXXXX",
"b": "YYYYY",
"c": "ZZZZZ"
}
const y = {
"a": "KKKKK",
"b": "LLLLL",
"c": "MMMMM"
}
const z = Object.keys(x).reduce((acc, key) => {
acc[x[key]] = y[key]
return acc
},{})
console.log(z)
答案 1 :(得分:0)
我们可以使用{
"_id" : ObjectId("5d5d8847170b94f18bdc2a5c"),
"content" : {
"formats" : {
"PNG" : {
},
"JPG" : {
}
}
}
}
{
"_id" : ObjectId("5d5d8847170b94f18bdc2a5d"),
"content" : {
"PNG" : {
},
"JPG" : {
}
}
}
和Array.prototype.reduce
遍历第一个对象的键,并将其值用作Object.keys
对象的键:
result
答案 2 :(得分:0)
您也可以将Object.assign
与Object.values
一起使用:
var obj1 = {
"a": "XXXXX",
"b": "YYYYY",
"c": "ZZZZZ"
};
var obj2 = {
"a": "KKKKK",
"b": "LLLLL",
"c": "MMMMM"
};
var obj3 = Object.assign(...Object.values(obj1).map((k, i) => ({[k]: Object.values(obj2)[i]})));
console.log(obj3);
或者,使用forEach
:
var obj1 = {
"a": "XXXXX",
"b": "YYYYY",
"c": "ZZZZZ"
};
var obj2 = {
"a": "KKKKK",
"b": "LLLLL",
"c": "MMMMM"
};
var obj3 = {};
Object.values(obj1).forEach((key, i) => obj3[key] = Object.values(obj2)[i]);
console.log(obj3);
答案 3 :(得分:0)
您可以使用Object.Values
+ reduce
这样的东西:
const a = {
"a": "XXXXX",
"b": "YYYYY",
"c": "ZZZZZ"
}
const b = {
"a": "KKKKK",
"b": "LLLLL",
"c": "MMMMM"
}
var res = Object.values(a).reduce((newObject, value, index) => {
newObject[value] = Object.values(b)[index]
return newObject;
}, {});
console.log(res)
答案 4 :(得分:0)
我们可以使用Array.prototype.reduce
和Object.entries
遍历第一个对象的键,并将其值用作result
对象的键:
const obj1 = {
"a": "XXXXX",
"b": "YYYYY",
"c": "ZZZZZ"
}
const obj2 = {
"a": "KKKKK",
"b": "LLLLL",
"c": "MMMMM"
}
const result = Object.entries(obj1).reduce((acc, ele) => {
acc[ele[1]] = obj2[ele[0]];
return acc;
}, {});
console.log(result);
答案 5 :(得分:0)
您可以循环浏览键,并根据输入对象中的值设置输出对象的键和值
const o1 = { a: "XXXXX", b: "YYYYY", c: "ZZZZZ" },
o2 = { a: "KKKKK", b: "LLLLL", c: "MMMMM" },
output = {};
for (let key in o1)
output[o1[key]] = o2[key]
console.log(output)