JS 优化条件语句的5个技巧
前言
在使用 JavaScript 的时候,有时我们会处理大量条件语句,这里有5个技巧帮助我们编写更简洁的条件语句。
一、对多个条件使用 Array.includes
例子:
function condition(fruit) {
if (fruit == 'apple' || fruit == 'banana') {
console.log(fruit);
}
}
上面的例子看起来不错,但如果有更多水果需要判断呢,比如桃子、草莓、橙子等等,我们要用更多的 || 来扩展这个表述吗?
我们可以使用 Array.includes 重写上面的条件
function condition(fruit){
const allFruit = ['apple','banana','peach','Strawberry','orange'];
if(allFruit.includes(fruit)){
console.log(fruit)
}
}
这样做之后,代码看起来更简洁。
二、更少的嵌套,尽早返回
例子:
// 尽早返回不存在的条件 function condition(fruit, quantity) {
const allFruits = ['apple','banana','peach','Strawberry','orange']; if (!fruit) throw new Error('No fruit!'); if (allFruits.includes(fruit)) {
console.log(fruit); if (quantity > 10) {
console.log(quantity);
} }
}
通过反转条件和提早返回,我们可以进一步减少嵌套:
function condition(fruit, quantity) {
const allFruits = ['apple','banana','peach','Strawberry','orange']; if (!fruit) throw new Error('No fruit!'); if (!allFruits.includes(fruit)) return ; console.log(fruit) if (quantity > 10) {
console.log(quantity);
}
}
三、使用默认的函数参数和解构
例子:
function condition(fruit, quantity) {
if (!fruit) return;
const q = quantity || 1; console.log(`We have ${q} ${fruit}!`);
} condition('banana'); // We have 1 banana!
condition('apple', 2); // We have 2 apple!
使用默认参数和解构:
function condition({name} = {}, quantity = 1) {
console.log (name || 'unknown');
} condition(undefined); // unknown
condition({ }); // unknown
condition({ name: 'apple', color: 'red' }); // apple
四、选择 Map 或对象字面量,而不是 Switch 语句
例子:
function condition(color) {
switch (color) {
case 'red':
return ['apple', 'strawberry'];
case 'yellow':
return ['banana', 'pineapple'];
case 'purple':
return ['grape', 'plum'];
default:
return [];
}
} condition(null); // []
condition('yellow'); // ['banana', 'pineapple']
上面的代码似乎没有什么问题,但我发现它相当冗长。同样的结果可以通过对象字面量和更简洁的语法来实现:
对象字面量:
const fruitColor = {
red: ['apple', 'strawberry'],
yellow: ['banana', 'pineapple'],
purple: ['grape', 'plum']
}; function condition(color) {
return fruitColor[color] || [];
}
使用 Map 实现相同效果:
const fruitColor = new Map()
.set('red', ['apple', 'strawberry'])
.set('yellow', ['banana', 'pineapple'])
.set('purple', ['grape', 'plum']); function condition(color) {
return fruitColor.get(color) || [];
}
使用 Array.filter
const fruits = [
{ name: 'apple', color: 'red' },
{ name: 'strawberry', color: 'red' },
{ name: 'banana', color: 'yellow' },
{ name: 'pineapple', color: 'yellow' },
{ name: 'grape', color: 'purple' },
{ name: 'plum', color: 'purple' }
]; function condition(color) {
return fruits.filter(f => f.color == color);
}
五、所有或部分使用 Array.every & Array.some 的条件
例子:
检查所有水果都为红色:
const fruits = [
{ name: 'apple', color: 'red' },
{ name: 'banana', color: 'yellow' },
{ name: 'grape', color: 'purple' }
]; function condition() {
let isAllRed = true; for (let f of fruits) {
if (!isAllRed) break;
isAllRed = (f.color == 'red');
} console.log(isAllRed); // false
}
代码太长了!我们可以用 Array.every 来减少行数:
const fruits = [
{ name: 'apple', color: 'red' },
{ name: 'banana', color: 'yellow' },
{ name: 'grape', color: 'purple' }
]; function test() {
const isAllRed = fruits.every(f => f.color == 'red'); console.log(isAllRed); // false
}
如果我们想用一行代码来判断任何一个水果是否为红色,我们可以使用 Array.some
const fruits = [
{ name: 'apple', color: 'red' },
{ name: 'banana', color: 'yellow' },
{ name: 'grape', color: 'purple' }
]; function condition() {
const isAnyRed = fruits.some(f => f.color == 'red'); console.log(isAnyRed); // true
}
随笔整理自
http://blog.jobbole.com/114671/
感谢博主分享!
JS 优化条件语句的5个技巧的更多相关文章
- 优化 JS 条件语句的 5 个技巧
优化 JS 条件语句的 5 个技巧 原创: 前端大全 前端大全 昨天 (给前端大全加星标,提升前端技能) 编译:伯乐在线/Mr.Dcheng http://blog.jobbole.com/11467 ...
- 【译】写好JavaScript条件语句的5个技巧
译文 当我们写JavaScript代码时,经常会用到到条件判断处理,这里有5个技巧能使你写出更好.更简洁的条件语句. 1.使用Array.includes处理多种条件 让我们来看一下的例子: // c ...
- JS:条件语句3
1.while while 语句只要指定条件为 true,就会执行循环. 语法: while(条件){ 语句: } 例: var i = 0; while (i < 5) { console.l ...
- JS:条件语句1
条件语句: 1.if...else if (condition1) { 当条件 1 为 true 时执行 } else { 当条件 1 不为 true 时执行 } if (condition1) { ...
- JS:条件语句2
1.for循环:循环代码块一定的次数 例: for(var i = 0;i<5;i++){ console.log(i); } // 0 1 2 3 4 遍历对象: var arr=[" ...
- 应用索引技术优化SQL 语句(转)
原文出处 一.前言 很多数据库系统性能不理想是因为系统没有经过整体优化,存在大量性能低下的SQL 语句.这类SQL语句性能不好的首要原因是缺乏高效的索引.没有索引除了导致语句本身运行速度慢外,更是导致 ...
- 20个JS优化代码技巧
原文网址链接为:http://www.jstips.co/ .截取了一部分本人认为比较实用的技巧分享给大家.其中一小部分技巧为JS面向对象的写法,不宜一一列出.关于JS面向对象的写法可参考本人前几篇随 ...
- js中的条件语句
//js中的条件语句 ; //example1 单分支语句 ){ console.log("你已经不年轻了!"); }else{ console.log("你依然很有活力 ...
- js中的运算符和条件语句
js中的运算符大体上可以分为4类:1算术运算符.2一元操作符.3比较运算符.4逻辑运算符. 算术运算符一般指的是加减乘除求余这五种操作符:+,-,*,/,%.通过算术运算符可以对js中的变量进行操作. ...
随机推荐
- [国家集训队] Crash的文明世界
Description 给定一棵 \(n\) 个点的树,对于每个点 \(i\) 求 \(S(i)=\sum\limits_{j=1}^n \operatorname{dist(i,j)}^k\) .\ ...
- ROS笔记1 安装及创建一个ROS Package
安装 跟着官方的安装指引来就行了.安装前要先确定自己的ros版本和ubuntu版本.这二者是一一对应的. http://wiki.ros.org/ROS/Installation 主要是package ...
- [android]android下apk的安装过程
/********************2016年4月23日更新********************************/ 知乎:有什么apk分析工具? 拿到了一个apk文件,怀疑不安全,在 ...
- H5页面的高度宽度100%
解决方案1: 设置如下:html,body{ min-height:100vh; background-color:#fff; }这样高度首先不会写死,而且满足最小高度是满屏 解决方案2: 可以用vh ...
- 在虚拟机中搭建qduoj(二)——安装OJ
在上一章中,我们已经做好了准备工作,现在,正式开始搭建OJ. 可以先看看官方文档: https://github.com/QingdaoU/OnlineJudgeDeploy/tree/2.0 运行p ...
- Python进阶之函数式编程
函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...
- DevOps 工程师实际上是做什么的
DevOps 工程师实际上是做什么的? 我们之前已经讨论过许多关于DevOps和DevOps世界的最新趋势了.但是DevOps工程师到底是做什么的? DevOps工程师以最纯粹的方式弥合了软件开发和运 ...
- C#获得指定目录床架时间、更新时间和最后访问时间等信息的代码
将做工程过程常用的内容片段备份一次,下面的内容内容是关于C#获得指定目录床架时间.更新时间和最后访问时间等信息的内容,希望能对小伙伴们也有用. using System;using System.IO ...
- C# 仿360悬浮球开发demo程序
https://files.cnblogs.com/files/wohexiaocai/%E4%BB%BF360%E5%8A%A0%E9%80%9F%E5%99%A8.zip
- 从零学习Fluter(七):Flutter打包apk详解
写一个win上 flutter 打包apk的教程 这篇文档介绍一下flutter打包发布正式版apk 整体来看,和命令行打包rn的方法相差不大 打包前先做检查工作&查看构建配置 Android ...