最近在刷leetcode的时候有些题需要初始化数组, 踩了一些坑, 这里给出一些Tips
提前声明: 这里的Tips用的都是Array.fill
和 Array.from
, 使用 Array.map
的方法最后会说
初始化全是相同值的数组
有两种方法
const arrUsingFill = Array(3).fill(0) // [0, 0, 0]
const arrUsingFrom = Array.from({
length: 3 }, () => 0) // [0, 0, 0]
两种方法有什么区别呢, 在初始化非 primitive 的时候就有不同了
const arrUsingFill = Array(3).fill([]) // [[], [], []]
const arrUsingFrom = Array.from({
length: 3 }, () => ([])) // [[], [], []]
arrUsingFill[0] === arrUsingFill[1] // true
arrUsingFrom[0] === arrUsingFrom[1] // false
初始化有规律的数组
const arr1 = Array.from({
length: 3 }, (_, index) => index + 1) // [1, 2, 3]
const a = 1
const arr2