gpt4 book ai didi

javascript - 如何将对象 JSON 转换为 d3.js 数组数据

转载 作者:行者123 更新时间:2023-11-30 15:23:12 24 4
gpt4 key购买 nike

我有以下 JSON 格式的数据集,我想将其转换为我可以在 d3.js 中使用的格式:

    {  
"rank_type_1":{
"d1":0,
"d2":1,
"d3":2
},
"rank_type_2":{
"d1":1,
"d2":0,
"d3":2
},
"rank_type_3":{
"d1":2,
"d2":0,
"d3":1
}
}

我有 3 种排名类型,d1、d2 和 d3 根据这些排名类型进行排名。现在,我想将其转换为以下格式:

[
{
"id":d1
"rank_type_1" :0
"rank_type_2" :1
"rank_type_3" :2
},
{
"id":d2
"rank_type_1" :1
"rank_type_2" :0
"rank_type_3" :2
},
{
"id":d3
"rank_type_1" :2
"rank_type_2" :2
"rank_type_3" :1
}
]

原因是当我记录 d3.csv 函数的输出时,它具有类似的格式。也就是说,它是一个对象数组,第一个对象的键被转换为输出数组中的值。

我试过使用 Object.entries、Object.keys、Object.values 但没有成功。

最佳答案

您可以使用 Object.keys()forEach() 来循环对象并添加到数组。

var data = {"rank_type_1":{"d1":0,"d2":1,"d3":2},"rank_type_2":{"d1":1,"d2":0,"d3":2},"rank_type_3":{"d1":2,"d2":0,"d3":1}}

var result = [];
Object.keys(data).forEach(function(e) {
var that = this;
Object.keys(data[e]).forEach(function(a) {
if(!that[a]) {
that[a] = {id: a, [e]: data[e][a]}
result.push(that[a])
} else {
Object.assign(that[a], {[e]: data[e][a]})
}
})
}, {})

console.log(JSON.stringify(result, 0, 4))

关于javascript - 如何将对象 JSON 转换为 d3.js 数组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43393376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com