2

我想将嵌套对象拆分为对象数组。我可以使用两个 FOR 循环来实现相同的目标。

有什么办法可以让我有更好的解决方案,或者这是正确的?

以下片段供参考。

 var Input = {
      "English": {
        "v1": "10",
        "v2": "11",
        "v3": "34"
      },
      "Hindi": {
        "v1": "14",
        "v2": "16",
        "v3": "18"
      }
    }
    var Output = []

 for (let i = 0; i < Object.keys(Input).length; i++) {
      for (let j = 0; j<Object.keys(Object.values(Input)[i]).length; j++) {
        Output.push({
          "parameter": Object.keys(Input)[i],
          "machine": Object.keys(Object.values(Input)[i])[j],
          "value":Object.values(Object.values(Input)[i])[j]
        })
      }
    }


console.log(Output)

4

1 回答 1

2

你可以使用Object.entries()and Array.flatMap()

var Input = {
  English: {
    v1: "10",
    v2: "11",
    v3: "34",
  },
  Hindi: {
    v1: "14",
    v2: "16",
    v3: "18",
  },
};

const Output = Object.entries(Input).flatMap(([parameter, values]) =>
  Object.entries(values).map(([machine, value]) => ({
    parameter,
    machine,
    value,
  }))
);

console.log(Output);

这里.flatMap()将由创建的数组展平Object.entries().map()为一个大数组。它还使用数组解构从产生的元组中挑选出键和值Object.entries()

于 2021-01-24T20:17:49.973 回答