【发布时间】:2018-07-06 04:56:43
【问题描述】:
我正在处理一个巨大的 json 文件(大约 60 MB),我试图删除其中 volume = 0 的所有条目。数组的格式是
{
"date": 1424373000,
"high": 0.33,
"low": 225,
"open": 0.33,
"close": 225,
"volume": 0.999999,
"quoteVolume": 0.00444444,
"weightedAverage": 225
}
为此,我正在使用此代码。
fs.readFile('JSONFiles/poloniexBTCDataFeb19|2015-July2|2018.json', function read(err, data) {
if (err) {
throw err;
}
rawdata = JSON.parse(data);
rawdata.forEach(function(val, index, array) {
if (rawdata[index].volume == 0) {
rawdata.splice(index, 1)
}
})
});
这样做的问题是它只删除了大约一半具有此特征的条目(60k/108k)。我解决这个问题的方法是使用一个运行代码 9 次的 for 循环,这会将它们全部删除,但这会导致代码花费更长的时间,因为整个 json 文件有大约 360k 条目,它必须检查每个条目if 语句。我想知道是否有任何方法可以做到这一点,它实际上可以将它们全部删除,而不必以这种方式使用 for 循环?
编辑:我意识到我首先不需要此代码,所以没关系,但感谢所有答案。我希望这对遇到类似问题的其他人有所帮助。
【问题讨论】:
标签: javascript arrays json node.js