gpt4 book ai didi

javascript - 在对象数组中查找多个值的 d3 范围

转载 作者:数据小太阳 更新时间:2023-10-29 05:10:02 27 4
gpt4 key购买 nike

我的数据数组:

var data = [{glazed: 3.50, jelly: 4.50, powdered: 1.00, sprinkles: 3.50, age: 21, responses: 2,name:"test"},
{glazed: 2.83, jelly: 3.50, powdered: 1.83, sprinkles: 4.50, age: 22, responses: 6,name:"test"},
{glazed: 3.25, jelly: 4.75, powdered: 2.25, sprinkles: 3.50, age: 23, responses: 4,name:"test"},
{glazed: 1.50, jelly: 4.00, powdered: 2.50, sprinkles: 4.00, age: 25, responses: 2,name:"test"}];

如果我想找到用于结垢的釉面、果冻、粉末或洒水的范围,我会使用如下代码。

var x = d3.scale.linear()
.domain(d3.extent(data, function (d) {
return d.glazed;//or jelly etc..
}))
.range([0, width]);

我需要做什么才能获得釉面、果冻、粉末和洒水的所有值的范围,而不是所有不是年龄、 react 和姓名的值。

这是因为 json 文件是动态创建的,所以除了年龄、响应和姓名之外,我不知道键值。

所以,我的要求是它应该给我最小 1.5(来自釉面)和最大 4.75(来自果冻)

真诚感谢任何帮助..

谢谢

最佳答案

var x = d3.scale.linear()
.domain(d3.extent(data.map(function (item) {
return (item.glazed);
})))
.range([0, width]);

map() 返回 [3.5, 2.83, 3.25, 1.5]

extent() 返回 [1.5, 3.5]

如果您需要 data 的所有属性的绝对最小值和最大值,您应该连接数组:

var x = d3.scale.linear()
.domain(d3.extent(
[].concat(data.map(function (item) {
return (item.glazed);
}), data.map(function (item) {
return (item.jelly);
}), data.map(function (item) {
return (item.powdered);
}), data.map(function (item) {
return (item.sprinkles);
}))))
.range([0, width]);

最后,如果你有一个有值(value)的属性列表,你应该用匿名函数替换 [].concat(...) 表达式并像这样立即调用它:function(array , 名称){...}(数据, 温度)。你应该知道,在 JavaScript 中 array.propertyarray["property"] -- 是相同的调用。

var temp = ["glazed", "jelly", "powdered", "sprinkles"];
var width = 1000;
var data = [{glazed: 3.50, jelly: 4.50, powdered: 1.00, sprinkles: 3.50, age: 21, responses: 2,name:"test"},
{glazed: 2.83, jelly: 3.50, powdered: 1.83, sprinkles: 4.50, age: 22, responses: 6,name:"test"},
{glazed: 3.25, jelly: 4.75, powdered: 2.25, sprinkles: 3.50, age: 23, responses: 4,name:"test"},
{glazed: 1.50, jelly: 4.00, powdered: 2.50, sprinkles: 4.00, age: 25, responses: 2,name:"test"}];


var x = d3.scale.linear()
.domain(d3.extent(
function(array, names){
var res = [];
array.forEach(function(item){
names.forEach(function(name){
res = res.concat(item[name]);
});
});
return(res);
}(data, temp)
))
.range([0, width]);

演示:http://jsfiddle.net/v5qzuuhj/

关于javascript - 在对象数组中查找多个值的 d3 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29493843/

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