Код работоспособен из коробки в нативном ES6:
[...new Array(5)].map((item, idx) =>
idx === 1 ? true : false
)
В результате получается
[false, true, false, false, false]
array.
Любые несоответствия с ним вызваны используемым транспортером и его реализацией ...
синтаксиса расширения массива.В некоторых реализациях это может привести к несовместимости кода, особенно TypeScript с отключенной опцией компилятора downlevelIteration
.Например, он используется в Stackblitz, даже в проектах JS.Без итерации нижнего уровня она будет перенесена в:
new Array(5).slice().map(function (item, idx) {
return idx === 1 ? true : false;
});
new Array(5).slice()
, что приведет к массиву разреженный , который не будет повторяться с map
.Эту ситуацию можно решить с помощью Array.from
или Array.fill
(как уже предлагают другие ответы).Оба будут заполнять разреженный массив значениями undefined
, которые можно повторять с помощью map
:
Array.from(new Array(5)).map((item, idx) => idx === 1);
new Array(5).fill().map((item, idx) => idx === 1);