Функция js fill решает проблему массива или объекта

Массив 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) также необходим, потому что он весь пуст. массив не будет выполнять функцию карты

Guess you like

Origin blog.csdn.net/brilliantSt/article/details/123622328