[英]Javascript D3.js Manipulating arrays of objects
我對javascript或D3.js不太熟悉,需要一些指導。
我有兩個數據集(對象數組),我想加入。 我正在嘗試通過“加入”答案來將全國平均分數與州平均分數對齊。 要瀏覽數據,您可以將其剪切並粘貼到Tributary中 。
// National Averages Dataset
var nationaldataset = [];
var nAvg = "http://data.medicare.gov/resource/89u8-shx4.csv";
var nscore = "HCAHPS Answer Percent";
var nquestion = "HCAHPS Question";
var nanswer = "HCAHPS Answer Description";
d3.csv( nAvg, function(data) {
nationaldataset = data.map(function(d) { return [ d[nquestion], d[nanswer], d[nscore] ]; });
d3.select("body").selectAll("p")
.data(nationaldataset)
.enter()
.append("p")
.text( function(d) {return d ;} );
});
// State Averages Dataset
var statedataset = [];
var sAvg = "http://data.medicare.gov/resource/fhk8-g4vc.csv"; //State Average
var sq1 = "Percent of patients who reported that their nurses \"Sometimes\" or \"Never\" communicated well."
var sq2 = "Percent of patients who reported that their nurses \"Usually\" communicated well."
var sq3 = "Percent of patients who reported that their nurses \"Always\" communicated well."
// .. this list goes on for 30 columns
d3.csv( sAvg, function(data) {
sstatedataset = data.map(function(d) { return [ d["State"], d[sq1], d[sq2], d[sq3] ]; });
d3.select("body").selectAll("p")
.data(statedataset)
.enter()
.append("p")
.text(function(d) {return d ;} );
});
我看過幾種javascript數組處理方法(Join(),Concatenate()等),但有一個空白。 我將如何做這樣的事情-
Select nationaldataset.nquestion
, nationaldataset.nanswer
, nationaldataset.nscore
, statedataset.Score
From nationaldataset, statedataset
WHERE nationaldatset.nanswer = statedataset.columnname
AND statedataset.State in ['SD', 'MN', 'IA']
不幸的是,Java中沒有join
運算符或等效運算符-您必須顯式搜索匹配項。 對於您的情況,可以使用嵌套循環來實現。 代碼看起來像這樣。
var results = [];
for(var i = 0; i < statedataset.length; i++) {
if(statedataset[i].State == "SD" ||
statedataset[i].State == "MN" ||
statedataset[i].State == "IA") {
var j = 0;
for(j = 0; j < nationaldataset.length; j++) {
if(nationaldataset[j].nanswer == statedataset[i].columnname) {
break;
}
}
if(j < nationaldataset.length) {
results.push({
"nquestion": nationaldataset[j].nquestion,
"nanswer": nationaldataset[j].nanswer,
"nscore": nationaldataset[j].nscore,
"Score": statedataset[i].Score
});
}
}
}
這應該為您提供可與D3一起使用的數據結構。 是的,幾乎肯定有一種更好的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.