我对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