gpt4 book ai didi

javascript d3 从一组数据创建数据集

转载 作者:行者123 更新时间:2023-12-03 00:59:34 25 4
gpt4 key购买 nike

我有一个对象数组,我想要做的是根据值是否等于某个值来分隔条目。我正在从 csv 中读取数据,并将一些字符串更改为整数,如下所示

d3.csv('mydata.csv', function(error, data){

data.forEach(function(d){

d["Fruits"] = +d["Fruits"]
d["Stores"] = +d["Stores"]
d["Names of Fruits"] = d["Names of Fruits"]

});
});

这就是我的原始数据的样子。我的数据

Array(10) [ {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…} ]

对象看起来像这样

"Fruits": 5
"Stores": 22
"Names of Fruits": "oranges",

"Fruits": 100
"Stores": 3
"Names of Fruits": "apples",


"Fruits": 10
"Stores": 300
"Names of Fruits": "pear",

"Fruits": 10
"Stores": 300
"Names of Fruits": "apple",

等等等等。要获取此数据,我可以调用 console.log(data) ,以上所有内容都会显示在控制台中。我希望能够根据“水果名称”值将它们分开。所以可能想要调用 console.log(appleData) ,结果将是

 "Fruits": 100
"Stores": 3
"Names of Fruits": "apples",

"Fruits": 10
"Stores": 300
"Names of Fruits": "apple",

与 OrangeData、pearData 等相同

为了做到这一点,我已经尝试过

 d3.csv('mydata.csv', function(error, data){

appleData = data.forEach(function(d){

if(d["Names of Fruits"] =="apple"){

d["Fruits"] = +d["Fruits"]
d["Stores"] = +d["Stores"]
d["Names of Fruits"] = d["Names of Fruits"]

}
});

orangeData = data.forEach(function(d){

if(d["Names of Fruits"] =="orange"){

d["Fruits"] = +d["Fruits"]
d["Stores"] = +d["Stores"]
d["Names of Fruits"] = d["Names of Fruits"]

}
});

});

​​

​​

最佳答案

有很多方法可以做到这一点;这里有几个例子。第一个使用 d3.nest并将数据转换为数组的数组,外键是水果的名称。第二个是一些手动编写的代码,它返回一个包含每种水果属性的对象。什么最有效实际上取决于您更大的用例。

<!DOCTYPE html>
<html>

<head>
<script data-require="d3@4.0.0" data-semver="4.0.0" src="https://d3js.org/d3.v4.min.js"></script>
</head>

<body>
<script>
var data = [{
"Fruits": 5,
"Stores": 22,
"Names of Fruits": "oranges"
}, {
"Fruits": 100,
"Stores": 3,
"Names of Fruits": "apple"
},
{
"Fruits": 10,
"Stores": 300,
"Names of Fruits": "pear"
},

{
"Fruits": 10,
"Stores": 300,
"Names of Fruits": "apple"
}
];

console.log(
d3.nest()
.key(function(d) { return d["Names of Fruits"]; })
.entries(data)
);

var rv = {};
data.forEach(function(d){
if (!rv[d["Names of Fruits"]]) rv[d["Names of Fruits"]] = [];
rv[d["Names of Fruits"]].push(d);
});
console.log(rv);

</script>
</body>

</html>

关于javascript d3 从一组数据创建数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52682018/

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