【问题标题】:How can I "unstack" my JSON data in d3.js?如何在 d3.js 中“取消堆叠”我的 JSON 数据?
【发布时间】:2020-08-03 04:40:37
【问题描述】:
我有一个 JSON 数组中的数据,如下所示:
[{"TEACHER":3.7},{"STUDENT":1.9}]
我想要的输出是一个如下所示的 JSON 数组:
var statements = [
{
name: "TEACHER",
value: 3.7
},
{
name: "STUDENT",
value: 1.9
}
];
如何“取消堆叠”我必须添加变量标签的数据?
【问题讨论】:
标签:
javascript
json
d3.js
【解决方案1】:
这就是我想出的。不过,可能有更优雅的方式来做到这一点。
var x = [{"TEACHER":3.7},{"STUDENT":1.9}];
console.log(unstack(x));
function unstack(stacked){
var unstacked = [];
stacked.forEach((element) => {
unstacked.push({
name: Object.keys(element)[0],
value: Object.values(element)[0]
});
});
return unstacked;
}
【解决方案2】:
它是您原始对象的唯一键吗?如果是这种情况,您可以使用唯一的项目Object.keys() 或Object.entries() 返回。如果还有其他属性,您可以在键中查找匹配项并进行相应处理。
const input = [{"TEACHER":3.7},{"STUDENT":1.9}];
const output = [];
input.forEach(item => {
const key = Object.keys(item)[0];
output.push({name: key, value: item[key]});
});
console.log(output);