逻辑运算符简化条件判断

  1. # 省略写法
  2. condition1 && condition2();
  3. # 相当于
  4. if(condition1){
  5. condition2()
  6. }
  1. # 省略写法
  2. var a = b&&1;
  3. # 相当于
  4. if(b){
  5. a = 1;
  6. }else{
  7. a=b;
  8. }
  1. # 省略写法
  2. condition1 || condition2() // 如果条件1不存在 则执行条件2 娄底写法
  3. var a = b||1;
  4. # 相当于
  5. if(b){
  6. a = b
  7. }else{
  8. a=1
  9. }

数组浅拷贝

  1. let arr = [1,2,3];
  2. let arr1 = arr; // ❌ 修改arr1会改变arr,比如往arr1里push数据
  3. // right:✅
  4. arr2 = arr.slice();
  5. arr3 = arr.concat();
  6. arr4 = [...arr];
  7. arr5 = Array.from(arr);

初始化数组

申请长度为n的数组,并且数组所有元素初始化为1

  1. let arr1 = Array.from({length: n}, _ => 1);
  2. let arr2 = new Array(n).fill(1);
  3. let arr3 = Array.from({length: 1000}, (item, index) => index);
  4. # 不推荐:
  5. let arr4 = new Array(1000).fill(1).map((item, index) => index);

不过用这个方法生成二维数组的时候,前方有坑

  1. # 二维矩阵的生成
  2. let mark = new Array(n+1).fill([]);
  3. # 实际上fill的那个数组 指向一个地址

解决办法:=> 使用Array.from({ length: n+1 }, () => ([]));

变量赋值

  1. const [a, b, c, d, e] = [1, 2, 3, 4, 5]; // a=1,b=2,c=3,d=4,e=5

变量交换

  1. let x = 1,y = 2;
  2. # 利用解构
  3. [x, y] = [y, x];
  4. # 位运算异或 (只能进行数字的交换
  5. a^=b:
  6. b^=a:
  7. a^=b:
  8. # 普通版 第三方变量
  9. let temp = a;
  10. a = b;
  11. b = temp;