javascript - 如何将嵌套对象拆分为对象数组 - 避免 for 循环

标签 javascript node.js arrays

我想将嵌套对象拆分为对象数组。我可以使用两个 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)

最佳答案

您可以使用Object.entries()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() 创建的数组展平为一个大数组。它还使用 array destructuringObject.entries() 生成的元组中挑选出键和值。

关于javascript - 如何将嵌套对象拆分为对象数组 - 避免 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65875238/

相关文章:

node.js - Nuxt js错误找不到页面目录

javascript - 使用 Node.js 验证 iOS 收据

c++ - 为什么将数组视为函数参数 C++ 中的指针?

c - 为什么我的程序接受的整数太多而输入的整数太少?

Javascript:确定数组中的所有元素是否都是对象中的键

javascript - JavaScript 正则表达式中的 ASCII 7 响铃字符

javascript - 很好地使用 requirejs 或 grunt 与 concat/minification 来获得 angularjs 性能

javascript - 部署后套接字io不工作

javascript - 在 1 秒内重定向 setinterval javascript 或根据条件停止 setinterval

javascript - 使用 toLowerCase 通过 for 循环在数组中查找匹配项