2016-12-27 5 views
1

これは本当に簡単なはずですが、私はうまく機能しません。NodeJSオブジェクトをセットに追加して反復する方法は?

var Set = require("collections/set"); 

function User() { 
    this.name = 'something'; 
} 

var clients = new Set(); 

var a = new User(); 
var b = new User(); 
clients.add(a); 
clients.add(b); 

var arr = clients.toArray(); 
for (var user in arr) { 
    console.log(user.name+' iterated'); 
} 

は、なぜ私が取得しています:

undefined iterated 
undefined iterated 

何私が取得したいことは次のとおりです。

something iterated 
something iterated 
+0

を(私はあなたのcollections/set事はそれが仕事になりイテレータシンボルの事を露出させるのに十分にスマートであると仮定しています)配列を作成し、直接行うだけです。 for(クライアントのvarユーザー) 次に、約50回、「未定義の反復」を取得します。 – user2105624

+0

あなたは 'の代わりに'の 'を使用するつもりだと思う? – david

+0

http://stackoverflow.com/questions/20069828/how-to-convert-set-to-arrayこれらの方法のいずれかが動作しますか? –

答えて

2
var Set = require("collections/set"); 

function User() { 
    this.name = 'something'; 
} 


var clients = new Set(); 

var a = new User(); 
var b = new User(); 
clients.add(a); 
clients.add(b); 


var arr = clients.toArray(); 
for (var i=0;i<arr.length;i++) { 
    console.log(arr[i].name+" iterated"); 
} 
//something iterated 
//something iterated 
+0

これは機能します!ありがとうございました – user2105624

+0

@ user2105624 – Sumeet

0

あなたはループのために、あなたの中ofの代わりinを使用する必要があります。 inはオブジェクト上のフィールドをループします。そのため、setオブジェクトで50行になるのです。一方、ofはイテレータのようにターゲットを処理し、期待どおりの内容を取得します。次に例を示します。

function User() { 
 
    this.name = 'something'; 
 
} 
 

 
var clients = new Set(); 
 

 
var a = new User(); 
 
var b = new User(); 
 
clients.add(a); 
 
clients.add(b); 
 

 
for (var user of clients) { 
 
    console.log(user.name+' iterated'); 
 
}

私はスキップ場合も

+0

私はSyntaxErrorを得ています。 – user2105624

+0

その後、実際の配列を取得できる場合は、sumeetが投稿したことを行います。 – david

関連する問題