2017-10-15 29 views
0

我有一个这样的数据集:D3转换为对象的排列编号

var data = [{state: "CA", number: "3"},{}...]; 

我想用它来获取数据集中的最大数量:

d3.max(data, function(d){ return d.number;}) 

不过我没有得到正确的答案。有关如何纠正此问题的任何建议?

回答

2

现在你正在比较字符串,结果可能不是你所期望的。

例如,检查此演示:

var data = [{ 
 
    state: "CA", 
 
    number: "3" 
 
}, { 
 
    state: "NY", 
 
    number: "5" 
 
}, { 
 
    state: "PA", 
 
    number: "41" 
 
}]; 
 

 
var max = d3.max(data, function(d) { 
 
    return d.number; 
 
}); 
 

 
console.log("Max is: " + max)
<script src="https://d3js.org/d3.v4.min.js"></script>

你可能会认为,最大为41。但是,它返回"5",这确实是“最高”字符串。

解决方案:转换您的字符串到数字(在这里,使用一元加运算,+):

var data = [{ 
 
    state: "CA", 
 
    number: "3" 
 
}, { 
 
    state: "NY", 
 
    number: "5" 
 
}, { 
 
    state: "PA", 
 
    number: "41" 
 
}]; 
 

 
var max = d3.max(data, function(d) { 
 
    return +d.number; 
 
    //  ^--- unary plus 
 
}); 
 

 
console.log("Max is: " + max)
<script src="https://d3js.org/d3.v4.min.js"></script>