刷力扣买卖股票系列问题时在创建与初始化数组上遇到了很多自己不知道的知识点,写篇博客记录一下。
一;创建数组
1.快速创建并初始化二维数组1
var arr1 = new Array(3).fill([0, 0]);
// 含义:创建一个三个坑位的数组,每个坑位又初始化为一个二维数组
// 注意:fill方法如果填充的是复杂数据类型的数据(对象和数组)那么所有被填充项引用的都是同一个对象而不是对象的拷贝,也就是说改变一个另外的都会跟着变
// 解决方法:
// 想要修改数组的时候要单独的替换整个数组
2.快速创建并初始化二维数组2
var arr2 = Array.from({length: 3}, () => new Array(2));
var arr2 = Array.from(new Array(3),()=>new Array(2));
需要用双重 for 循环进行初始化
3.快速创建并初始化二维数组3
var arr3 = [];
for(let i = 0;i<2;i++) {
arr3[i] = [];
}
4.利用数组的map方法快速生成二维数组。
let dp = new Array(2).fill(0).map(()=>{//这里不能将fill(0)删除
return Array(5)
});
注意:在这个方法中,不能将.fill(0)
删除,因为map方法给每个元素都按顺序调用的 callback 函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 delete 删除的索引不会被调用。可以选择填充赋值其他数而不一定是是0。