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

Aym*_*ier 6 javascript python arrays list-comprehension ecmascript-6

Python 3.6:

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

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

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

Ori*_*ori 16

JS中的数组理解是针对ES2016提出的,但从未进入最终版本.Firefox支持一段时间的理解,但在以后的版本中删除了支持.

您可以使用Array#from来获得接近理解的东西.

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

console.log(result);
Run Code Online (Sandbox Code Playgroud)

  • 这是对'Array.from`的巧妙使用!出于某种原因,Array.fill.map在Chrome/Firefox中速度更快,但这更具可读性. (2认同)

Rob*_* M. 8

在Javascript中没有任何可爱的东西.据我所知,您需要创建一个新的数组并使用它.fill()来使每个元素不同于undefined.然后你可以使用.map并返回/使用数组索引而不是值.像这样的东西:

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

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