可能是最有用的一起笔记了,总结JS中和其他语言不一样的坑,持续更新。。
- 不要用 a == [] 判断数组是否为空。用 arr.length == 0 判断数组是否为空
const arr = [];
if (arr == []){
console.log('arr 是一个空数组');
} else{
console.log('arr 不是一个空数组');
}
//输出: arr 不是一个空数组
const arr = [];
if (arr.length == 0){
console.log('arr 是一个空数组');
} else if (arr == undefined){
console.log('arr 不存在');
}
//输出: arr是一个空数组
- 不要用arr[-1] 或 arr.last访问数组中最后一个元素。用arr[arr.length-1]
const arr = [2,3,4];
console.log(arr[-1]); //输出:undefined
console.log(arr.last); //输出:undefined
console.log(arr[arr.length-1]); //输出: 4
console.log(arr.slice(-1)); //输出: [4]
- 创建二维数组
var twoD = [];
const n = 3;
for(i=0; i<n; i++){
twoD.push(new Array(n).fill(0))
}
console.log(twoD);
不要用new Array(n).fill(new Array(n).fill(0)) 这种语句,否则数组中每一行的值始终相同。
var twoD = new Array(n).fill(new Array(n).fill(0));
twoD[0][0] = 1;
console.log(twoD);
//输出为:
[[1,1,1],
[0,0,0],
[0,0,0]]
- expand syntax(...)
...遍历数组中的元素,可用于
- 降低数组维度
let a = [1,2,3];
let s = [[...a]];
console.log(a,s);
- 深度复制数组
let a = [1,2,3];
let b = [...a];
b[0] = 0;
console.log(a,b);
- 字符串转数组
- Math.max() 传递参数,因为参数不能为数组
- 用map深度复制二维数组
6.&& operator