逻辑运算符简化条件判断
# 省略写法
condition1 && condition2();
# 相当于
if(condition1){
condition2()
}
# 省略写法
var a = b&&1;
# 相当于
if(b){
a = 1;
}else{
a=b;
}
# 省略写法
condition1 || condition2() // 如果条件1不存在 则执行条件2 娄底写法
var a = b||1;
# 相当于
if(b){
a = b
}else{
a=1
}
数组浅拷贝
let arr = [1,2,3];
let arr1 = arr; // ❌ 修改arr1会改变arr,比如往arr1里push数据
// right:✅
arr2 = arr.slice();
arr3 = arr.concat();
arr4 = [...arr];
arr5 = Array.from(arr);
初始化数组
申请长度为n的数组,并且数组所有元素初始化为1
let arr1 = Array.from({length: n}, _ => 1);
let arr2 = new Array(n).fill(1);
let arr3 = Array.from({length: 1000}, (item, index) => index);
# 不推荐:
let arr4 = new Array(1000).fill(1).map((item, index) => index);
不过用这个方法生成二维数组的时候,前方有坑
# 二维矩阵的生成
let mark = new Array(n+1).fill([]);
# 实际上fill的那个数组 是 指向一个地址
解决办法:=> 使用Array.from({ length: n+1 }, () => ([]));
变量赋值
const [a, b, c, d, e] = [1, 2, 3, 4, 5]; // a=1,b=2,c=3,d=4,e=5
变量交换
let x = 1,y = 2;
# 利用解构
[x, y] = [y, x];
# 位运算异或 (只能进行数字的交换
a^=b:
b^=a:
a^=b:
# 普通版 第三方变量
let temp = a;
a = b;
b = temp;