2016-06-12 208 views
1

說我有一個窗口對象數組,每個都有一個ID屬性,我需要獲得這些ID的數組。JavaScript是否具有與LINQ的Select語句類似的功能?

在LINQ,我只想做到這一點...

var ids = windows.Select(window => window.id).ToArray(); 

尼斯和簡單。但在JavaScript中,我一直在做這個...

var ids = []; 

for(i = 0; i < windows.length; i++) 
{ 
    var window = windows[i]; 
    ids.push(window.id); 
} 

我只是想知道是否有在Javascript簡單的/更簡單的方法,類似於LINQ的優雅的解決方案。

回答

2

如果你很高興與IE8及以上版本支持,array.map()是可比的選項:

var ids = windows.map(function(val) { 
    return val.id; 
}); 

這當然變得更加簡潔(和類似LINQ),如果使用ES6脂肪箭頭的功能,儘管這會如果支持非尖端瀏覽器需要轉譯器:

var ids = windows.map(x => x.id); 
+0

譯員?什麼是dat? – MarqueIV

+1

大多數瀏覽器版本(尚)不支持ES6語法。傳輸器是一種奇妙的工具,可以將語法重建爲更多瀏覽器可以使用的內容。它們允許您使用一種語法編寫並在另一個語言中輸出。常見的例子是巴別或Traceur。 –

+1

「大多數瀏覽器」?那麼,如果你使用的是Edge而不是IE,蘋果是一個明顯的例外,但是[甚至微軟都支持箭頭功能](http://caniuse.com/#feat=arrow-functions)。 (當然Chrome和FF也可以。) – nnnnnn

相關問題