解析嵌套数组数据

PS饶

如何将嵌套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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章