2017-10-15 30 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>