如何将对象键值数组转换为对象键值中的对象

时间:2021-05-15 00:16:11

标签: javascript json

我正在尝试将对象(键值)数组减少到一个对象(键值)。 我正在使用javascript中的json对象

我有这个:

  "relations":
[
  {"609e598ad32e90519043f09f": "609d8b78cf7bb100045fc593"},
  {"609e5945d32e90519043f09e": "609d8b78cf7bb100045fc593"},
  {"609e58b496d43235884e788f": "609d8b78cf7bb100045fc593"},
  {"609e57e3e1560e58245544f4": "609d8de9575b49000466e358"}
],

以下是我的预期结果:

  "relations":
{
  "609e598ad32e90519043f09f":"609d8b78cf7bb100045fc593",
  "609e5945d32e90519043f09e":"609d8b78cf7bb100045fc593",
  "609e58b496d43235884e788f":"609d8b78cf7bb100045fc593",
  "609e57e3e1560e58245544f4":"609d8de9575b49000466e358"
}

我怎样才能达到这个结果?

1 个答案:

答案 0 :(得分:0)

您可以使用 for..in 循环获取 key-value 并使用 reduce 将其存储到对象中。然后您可以将其分配给 relations 属性。

let obj = {
  relations: [
    { "609e598ad32e90519043f09f": "609d8b78cf7bb100045fc593" },
    { "609e5945d32e90519043f09e": "609d8b78cf7bb100045fc593" },
    { "609e58b496d43235884e788f": "609d8b78cf7bb100045fc593" },
    { "609e57e3e1560e58245544f4": "609d8de9575b49000466e358" },
  ],
};

const result = obj.relations.reduce((acc, curr) => {
  for (let key in curr) {
    acc[key] = curr[key];
  }
  return acc;
}, {});

obj.relations = result;

console.log(obj);

您也可以克隆对象并使用对象解构仅更改 relations

let obj = {
  name: "test",
  relations: [
    { "609e598ad32e90519043f09f": "609d8b78cf7bb100045fc593" },
    { "609e5945d32e90519043f09e": "609d8b78cf7bb100045fc593" },
    { "609e58b496d43235884e788f": "609d8b78cf7bb100045fc593" },
    { "609e57e3e1560e58245544f4": "609d8de9575b49000466e358" },
  ],
};

const result = obj.relations.reduce((acc, curr) => {
  for (let key in curr) {
    acc[key] = curr[key];
  }
  return acc;
}, {});

const cloneWithChanges = { ...obj, relations: result };

console.log(cloneWithChanges);