Как использовать Array.fill для создания 0 ... 499 в JavaScript? - PullRequest
0 голосов
/ 05 июля 2019

Я хочу использовать метод Array.fill для создания последовательности из 0 ... 499, например

const arr = []
for(let i = 0; i < 500; i++)
   arr.push(i);

В настоящее время я использую Array.from, например:

const arr = Array.from(Array(500).keys())

Но как я могу использовать только Array.fill для создания последовательности?Это вообще возможно?

Ответы [ 2 ]

3 голосов
/ 05 июля 2019

Нет, вы не можете сделать это только с заливкой, так как метод заливки добавляет статическое значение

Метод fill () заполняет (изменяет) все элементы массива из Начальный индекс (по умолчанию ноль) до конечного индекса (длина массива по умолчанию) с статическое значение. Возвращает измененный массив.

console.log(new Array(500).fill(0).map((_,i) => i ))
console.log(Array.from(Array(500).keys()))
2 голосов
/ 05 июля 2019

Невозможно использовать fill в одиночку, чтобы делать то, что вы просите. Вам придется комбинировать это с одним или несколькими другими методами.

Я не могу сказать, что рекомендую такой подход, потому что он действительно не похож на идиоматический JavaScript, но просто для демонстрации, вот решение, которое использует fill для заполнения результирующего массива ( вместо того, чтобы просто использовать его, чтобы обойти неловкость конструктора Array). Это также более многословно и, вероятно, менее эффективно, чем альтернативы.

console.log(Array.from({ length: 500 }).reduce((x, y, i, a) => (a.fill(i, i, i + 1), a), []))

Что бы это ни стоило, я нахожу Array.from({ length: 500 }, (_, i) => i), поскольку @ Терри предложил быть намного более элегантным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...