我想将嵌套对象拆分为对象数组。我可以使用两个 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 destructuring从 Object.entries()
生成的元组中挑选出键和值。
关于javascript - 如何将嵌套对象拆分为对象数组 - 避免 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65875238/