几个让 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');
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大杯美式不加糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值