JavaScript 的坑

可能是最有用的一起笔记了,总结JS中和其他语言不一样的坑,持续更新。。

  1. 不要用 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是一个空数组
  1. 不要用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]
  1. 创建二维数组
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]]
  1. 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() 传递参数,因为参数不能为数组
  1. 用map深度复制二维数组
    6.&& operator
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容