2016-12-27 90 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

另外,如果我跳過該陣列,並直接做: (var用戶在客戶端) 然後我得到「未定義迭代」約50倍。 – user2105624

+0

我認爲你的意思是使用''而不是'in'? – 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

This Works!謝謝 – user2105624

+0

歡迎來到stackoverflow @ user2105624 – Sumeet

0

您需要使用of而不是in在你的for循環。 in通過對象上的字段進行循環,這就是爲什麼你得到像設置對象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'); 
 
}

(我假設你collections/set的是足夠聰明的暴露迭代符號的東西,使得它的工作)

+0

看起來不夠聰明,我得到SyntaxError:意外標識符 - 在「部分」上。 – user2105624

+0

然後做什麼sumeet發佈,這將工作,如果你可以得到一個真正的數組。 – david