如何将一个对象的值复制到另一个对象的键中?

时间:2019-08-21 18:08:55

标签: javascript object

我有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]      
    }

,但不起作用。我在做什么错了?

6 个答案:

答案 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.assignObject.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.reduceObject.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)