簡體   English   中英

與ES2016或更高版本中的列表理解相同的是什么?

[英]What's the equivalent of a list comprehension like this one in ES2016 or greater?

Python 3.6:

[f"Cat #{n}" for n in range(5)]

['Cat #0', 'Cat #1', 'Cat #2', 'Cat #3', 'Cat #4']

JavaScript新手,新EcmaScript中的等價物是什么?

JS中的數組理解是針對ES2016提出的,但從未進入最終版本。 Firefox支持一段時間的理解,但在以后的版本中刪除了支持。

您可以使用Array#from來獲得接近理解的東西。

 const result = Array.from({ length: 5 }, (_, k) => `Cat #${k}`); console.log(result); 

在Javascript中沒有任何可愛的東西。 據我所知,您需要創建一個新的數組並使用.fill()來使每個元素不是undefined 然后你可以使用.map並返回/使用數組索引而不是值。 像這樣的東西:

 console.log((new Array(5)).fill(0).map((x,i) => `Cat ${i}`)) 

您可能會發現有用的生成器: https//developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Generator_comprehensions

使用GeneratorSpread Operator的組合。

ES2015:

[...(function*(){for(let n=0;n<5;)yield'Cat #'+n++})()]

["Cat #0", "Cat #1", "Cat #2", "Cat #3", "Cat #4"]

 console.log( [...Array(5)].map((v, i) => `Cat #${i}`) ) 

如果它也必須在IE中工作:

 console.log( Array.apply(0, Array(5)).map(function(v, i) { return 'Cat #' + i; }) ) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM