我對JavaScript很新穎。目前我的數據是CSV格式:以Javascript重新排列數據
place, time, value
a, 2009, 25
b, 2009, 35
c, 2009, 14
a, 2010, 42
b, 2010, 13
etc.
我想在格式[{'place': 'a', 'data':[{'t': '2009', 'v': '25'}, {'t': '2010' etc.
安排數據,所以我可以做一些線圖中D3
我目前使用下面的代碼。不過,我覺得這樣做效率不高,因爲如果我有相當數量的數據(40年以上的30個地方),JavaScript將遍歷所有數據30次。我還有其他方法可以解決這個問題嗎?
var instlist = [{'place': 'a', 'data':[]}, {'place':'b', 'data':[]}];
var data = instlist;
for (var i = 0; i < placelist.length; i++){
for (var j = 0; j < rawData.length; j++){
if (rawData[j]['place'] == instlist[i]['place']) {
data[i]['data'].push({'t': rawData[j]['t'],'v': rawData[j]['v']})
}
}
}
謝謝。歡呼聲
嗨。你的'rawData'數組是什麼樣的?是這樣的:'rawData = [{'place':'a | b | ...','data':{'t':...,'v':...}},{'放置':'a | b | ...','data':{'t':...,'v':...}},...]' – 2014-10-31 16:38:50
這實際上看起來不那麼糟糕。有一件事,我會在循環前將'placelist.length'和'rawData.length'存儲在變量中,否則它們將在每次迭代時重新計算。 – 2014-10-31 16:41:23
如果你的數據總是這樣,你可以使用一些庫,如https://lodash.com/來解析和存儲幫助程序。如果你來自MVC PHP或有LINQ積壓,一切都會很容易理解。 @ Andy的回答很好。 – 2014-10-31 16:47:42