几个让 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); }