2011-12-04 20 views
0

私の目標は、約4百万のレコードを含むCSVファイルを取り込み、特定のフィールドのデータをスクラブしながら各レコードを処理することです。スクラブプロセスは、実際には可逆ハッシュを作成しますが、時間がかかるプロセスです(ほぼ1秒)。そのフィールドには約50,000の一意の値しかないので、オブジェクトのプロパティとして設定することができます。ここでは、オブジェクトの構築方法の擬似例を示します。あなたは重複のために私は既存の値を上書きすることを計画していることがわかります(これは、いくつかの場合にはベースの検索の文をループすることを避けるためにである。nodeJSを使用した重複排除

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' 

私はオブジェクトのすべてのプロパティ(このようにIterating over every property of an object in javascript using Prototype?)を反復することについてここでいくつかの良い記事を見てきましたが、私は何をしているかをまだ正確にはわかりません。本質的に値を配列にダンプするので、私はこのようなものに終わることができますか?

EDIT:オブジェクトプロパティを設定しようとすると、null値が返されるか、または未定義になるため、ここで最初の部分でいくつかの支援を使用することもできます。私はまだ助けを必要とし、次にオブジェクトのプロパティを走査して配列を構築します。どんな助けでも大歓迎です。

+0

オブジェクトのキーの順序は** [保証されません](https://developer.mozilla.org/en/JavaScript/Reference/Statements/for...in#Parameters)です。 *。 '['fieldValue3'、 'fieldValue1'、 'fieldValue2']'で終わる可能性が高いので、注文が重要な場合は余分な作業が必要になります。 – josh3736

答えて

0
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.... 
    } 
}); 
1

あなたのオブジェクトのキーは、あなたが望む一意の値です。あなたは配列が必要です。 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); 
}); 

Object.keysも内部hasOwnPropertyをチェックを行いますので、@ DvideBy0によって答えに似ています。それはあなたが望むアレイへの一歩です。

+0

返事をありがとう。私はキーについて知りませんでした。私は間違いなくこれのために将来的にいくつかの使用を持っています:) – DvideBy0

関連する問題