几个让 JS 代码更优雅的代码技巧

从数组中删除重复项目

const arr = [1, 1, 2, 3, 3, 3, 6, 6];
const uniqueArr = [...new Set(arr)]; // [1, 2, 3, 6]

分析一下这一过程: 1)new Set(arr) 从数字列表中创建一个集合。创建集合会自动删除所有重复值。 2)展开运算符 ... 将任何可迭代对象转换为数组。这意味着将集合转换回数组。[...new Set(arr)]

较短的 If-else 的空合并

使用空值合并远算符 ?? ,如果您从未听过这个名词,请戳

let result;

// Longer form
if (result) {
          
   
  console.log(result);
} else {
          
   
  console.log(Nothing);
}

// Shorthand
console.log(result ?? Nothing);

防止崩溃的可选链

如果访问未定义的属性,则会产生错误。在未定义属性时使用可选链操作符,undefined将返回而不是错误。这可以防止你的代码崩溃。如果您从未听过这个名词,请戳

const student = {
          
   
  name: Jae,
  age: 22,
  address: {
          
   
    state: China
  }
};

// Longer form
console.log(student && student.address && student.address.sex); // 不存在,返回undefined

// Shorthand
console.log(student?.address?.sex); // 不存在,返回undefined

将任何值转换为布尔值

!!true  // true
!!2     // true
!![]    // true
!!Jae // true

!!false // false
!!0     // false
!!""    // false

使用 && 进行短路评估

不必用if语句检查某事是否为真,可以使用&&运算符:

let isReady = true;
function doSomething() {
          
   
  console.log(yes);
}

// Longer form
if (isReady) {
          
   
  doSomething();
}

// Shorthand
isReady && doSomething();

从数组中查找特定元素

使用 find() :

const fruits = [
  {
          
    type: Apple, color: red },
  {
          
    type: Banana, color: yellow }
]

// longer form
let yellowFruit;
for (let i = 0; i < fruits.length; ++i) {
          
   
  if (fruits[i].color === "Yellow") {
          
   
    yellowFruit = fruits[i];
  }
}

// shorthand
yellowFruits = fruits.find(res => res.color === yellow);

将对象的值收集到数组中

使用 Object.values()

const obj = {
          
   
  name: Jae,
  country: China,
  age: 22
};

// Longer form
let data = [];
for(let key in obj) {
          
   
  data.push(obj[key]);
}

// Shorthand
const data = Object.values(obj);

压缩多个条件

避免使用长 || 检查多个条件链,可以使用 includes() 方法:

const num = 1;

// Longer form
if (num === 1 || num === 2 || num === 3) {
          
   
  console.log(yes);
}

// Shorthand
if ([1, 2, 3].includes(num)) {
          
   
  console.log(yes);
}
经验分享 程序员 微信小程序 职场和发展