[英]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
使用Generator和Spread 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.