使用nodeJS进行重复数据删除
Deduplicating using nodeJS
我的目标是接收一个包含大约400万条记录的CSV文件,并在清洗特定字段的数据时处理每条记录。我们的清理过程实际上创建了一个可逆哈希,但这是一个耗时的过程(大约1秒)。由于该字段只有大约50,000个唯一值,所以我想做的是将它们设置为对象的属性。下面是一个如何构建对象的伪示例。您可以看到,对于重复项,我计划只覆盖现有值(这是为了避免必须遍历一些基于if的搜索语句)。
var csv = require('csv');
var http = require('http');
var CBNObj = new Object;
csv()
.fromPath(__dirname+'/report.csv',{
columns: true
})
.transform(function(data){
CBNObj[data['Field Value']] = data['Field Value'];
});
console.log(CBNObj);
创建的对象应该是这样的
myObj['fieldValue1'] = 'fieldValue1'
myObj['fieldValue2'] = 'fieldValue2'
myObj['fieldValue3'] = 'fieldValue3'
myObj['fieldValue1'] = 'fieldValue1'
myObj['fieldValue1'] = 'fieldValue1'
我在这里看过一些很好的帖子关于迭代在一个对象的每一个属性(像这个迭代在javascript中使用原型对象的每一个属性?),但我仍然不确定如何完成我正在做的事情。我怎么才能让我的对象有50k的属性并将值转储到数组中这样我就能得到这样的结果呢?
myArray = ['fieldVaue1','fieldVaue2','fieldVaue3']
编辑:我也可以在第一部分使用一些帮助,因为当我尝试设置对象属性时,我得到一个空值或未定义。我还需要帮助,然后遍历对象属性来构建我的数组。
您知道对象的键是您想要的惟一值。你只需要一个数组。在node.js中你可以使用Object.keys()。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys这是一种标准的方法,将对象的所有键(原型链中没有提供的键)放入数组中。所以你的例子看起来像这样。
var csv = require('csv');
var AcctObj = new Object();
var uniqueArray;
csv()
.fromPath(__dirname+'/report.csv',{
columns: true
})
.on('data',function(data){
AcctObj[data['Some Field Value']] = data['Some Field Value'];
})
.on('end', function(){
uniqueArray = Object.keys(AcctObj);
});
对象。keys也在内部做hasOwnProperty检查,所以它类似于@DvideBy0的答案。这只是你想要的数组的一步
var csv = require('csv');
var AcctObj = new Object();
csv()
.fromPath(__dirname+'/report.csv',{
columns: true
})
.on('data',function(data){
AcctObj[data['Some Field Value']] = data['Some Field Value'];
})
.on('end', function(){
for(var prop in AcctObj) {
if(AcctObj.hasOwnProperty(prop))
//Do something here....
}
});
相关文章:
- 如何在iOS应用程序中从Firebase中删除超过6小时的数据
- 谷歌地图/Angular JS:地图更新并不总是反映数据,并且可以't删除标记
- 如何从表中的api中删除表tr数据comping
- 单击文本时删除文本框的默认数据
- 停止JSON.parse()从JSON字符串数据中删除尾随零
- JavaScript - 合并两个对象数组并根据属性值删除重复数据
- 使用AJAX传递的数据编辑XML文件-正在删除XML数据
- 如何删除Localstorage中的数据
- 如何在字符串中的值之前删除字符串中的动态数据?/ 使用 Lodash 的 _.trimStart 与动态数据
- 从服务器中删除映射数据,丢失订阅
- 如何根据某些条件向可编辑的jquery数据表添加或删除按钮
- jQuery:从数据属性中删除除前4个字符外的所有字符
- 使用nodeJS进行重复数据删除
- 改进JS重复数据删除函数的性能
- 我如何合并包含对象的JavaScript数组,重复数据删除并保留新对象
- 编辑对新添加的数据删除不起作用
- Typeahead.js预取和远程数据源之间的重复数据删除
- 在NodeJS中使用gridfs通过元数据删除文件
- Ajax javascript数据删除最后一次
- 如何使用来自其他数组的数据删除数组项