Массив js имеет метод fill, который может заполнять массив данными. Этот метод имеет три параметра, слева направо: данные для заполнения, начальную позицию заполнения (по умолчанию – 0) и позицию остановки заполнения. (по умолчанию — длина массива), этот метод не меняет исходный массив следующим образом:
let arr = [0,0,0,0,0]
let res = arr.fill(1,1,2)
console.log(res) // [0, 1, 0, 0, 0]
let oneParam = arr.fill(1)
console.log(oneParam) // [1,1,1,1,1]
console.log(arr) // [0,0,0,0,0]
Вопрос: Однажды мне захотелось инициализировать двумерный массив по такому методу, а именно:
let arr = new Array(5).fill([])
Изначально я хотел создать массив длиной 5, и каждый элемент в массиве представляет собой пустой массив, но столкнулся с проблемой, то есть 5 массивов в этом массиве на самом деле указывают на массив, то есть заполнение функция должна ли я напрямую присвоить переданный параметр [], поэтому я присвоил значение одному из массивов и обнаружил, что все массивы имеют значения, поэтому я не могу этого сделать, если хочу инициализировать двумерный массив;
Решение: Чтобы решить эту проблему, я придумал другой метод — использовать метод карты следующим образом:
let arr = new Array(5).fill(0).map(item=>[])
Здесь сначала создайте массив длиной 5 и все 0, затем сопоставьте этот массив и верните пустой массив. На данный момент каждый массив различен. Примечание: этот fill(0) также необходим, потому что он весь пуст. массив не будет выполнять функцию карты