如何将嵌套JS数组的数据解析为对象?我通过使用for循环和Dict数据类型尝试了不同的方法,但是它不起作用。
背景:我正在使用chart.js库在Radar Chart中显示一些数据点,现在我试图解析嵌套的数组数据并将每个模块数组转换为单个对象,然后将其数据传递给可视化图表。
// Input-->
JavaScript_Array=
[["Q1","Module1",9],["Q2","Module1",5],["Q3","Module1",8],
["Q1","Module2",5],["Q2","Module2",9],["Q3","Module2",1],
["Q1","Module3",2],["Q2","Module3",1],["Q3","Module3",3],
["Q1","Module4",3],["Q2","Module4",4],["Q3","Module4",2]]
//Expected Output
Final_Array=[{label: "Module1", data: [9,5,8],Questions:[Q1,Q2,Q3] },
{label: "Module2", data: [5,9,1],Questions:[Q1,Q2,Q3]},
{label: "Module3", data: [2,1,3],Questions:[Q1,Q2,Q3]},
{label: "Module4", data: [3,4,2],Questions:[Q1,Q2,Q3]}]
您可以reduce
基于进行数组和分组label
。创建一个累加器,每个唯一的标签作为键,并在输出中将所需的对象作为值。如果标签在累加器上尚不存在,请添加它。然后,更新对象的各个键。使用Object.values()
从分组对象中获取值数组:
const input=[["Q1","Module1",9],["Q2","Module1",5],["Q3","Module1",8],["Q1","Module2",5],["Q2","Module2",9],["Q3","Module2",1],["Q1","Module3",2],["Q2","Module3",1],["Q3","Module3",3],["Q1","Module4",3],["Q2","Module4",4],["Q3","Module4",2]];
const merged = input.reduce((acc, [q, label, n]) => {
acc[label] = acc[label] || { label, data: [], Questions: [] };
acc[label].data.push(n);
acc[label].Questions.push(q);
return acc
}, {})
const output = Object.values(merged)
console.log(output)
这就是合并/累加器对象的样子
{
"Module1": {
label: "Module1",
data: [9, 5, 8],
Questions: ["Q1", "Q2", "Q3"]
},
"Module2": {
...
},
"Module3": {
...
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句