Вы можете столкнуться с ситуацией, когда вам нужен массив с предопределенными значениями, чтобы вы могли выполнять итерации по ним. Самым очевидным способом будет создание цикла for и инициализация массива, как показано ниже:
let array = []
for (let index = 0; index < 10; index++) {
array.push(1)
}
Мы рассмотрим 3 других метода заполнения массива в javascript без явного использования цикла for.
Использование метода Array.fill
Мы можем использовать метод fill
, предоставляемый объектом Array
для заполнения массива предопределенными значениями.
const array = Array(10).fill(1)
console.log(array) // [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
Array(10)
создаст пустой (разреженный) массив размером 10.
Метод fill
принимает дополнительные параметры, которые могут быть использованы для заполнения только части массива:
const array = [1, 2, 3, 4]
array.fill(5, 2, 4)
console.log(array) //[1, 2, 5, 5]
Второй аргумент используется для указания, с какой позиции начинать (включительно), а третий аргумент говорит, до какого места заполнять (исключительно, максимум — array.length
).
Использование метода Array.from
Мы можем заполнить массив с помощью метода Array.from
двумя различными способами:
const array1 = Array.from({ length: 10 }, () => 1)
console.log(array1) // [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
const array2 = Array.from(Array(10), () => 1)
console.log(array2) //[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
В качестве первого аргумента принимается массив или объект iterable, а в качестве второго — функция map, которая должна вернуть заполняемое значение.
Использование оператора spread и функции .map
Для заполнения массива мы можем использовать комбинацию оператора spread и функции map
:
const array = [...Array(10)].map(() => 1)
console.log(array) //[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
Здесь необходимо разложить и создать другой массив, так как
Array(10).map(()=>1)
создаст только пустой (разреженный) массив.
Заполнение массива с 1..n
Если вам нужно заполнить массив числами от 1 до n (скажем, от 1 до 10), вы можете сделать это с помощью одного из следующих кодов:
const array1 = Array.from({ length: 10 }, (value, index) => index + 1)
console.log(array1) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
const array2 = [...Array(10)].map((value, index) => index + 1)
console.log(array2) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Заполнение массива объектами
Массив можно заполнять не только числами, но и другими типами значений, такими как строка, объект и т.д. Если вам нужно создать массив объектов, то вы можете сделать это, как показано ниже:
const array = Array.from({ length: 5 }, (value, index) => {
return { id: index + 1 }
})
console.log(array) // [{"id":1},{"id":2},{"id":3},{"id":4},{"id":5}]
Если вы знаете какие-либо другие методы, пожалуйста, опишите их в комментариях ниже.