优化 JS 条件语句及JS 数组常用方法, ---- 看完绝对对日后开发有用
前言: 日常所说的优化优化、最后我们到底优化了哪些,不如让我们从代码质量开始;个人觉得简洁简化代码其实觉得存在感挺强烈的QAQ
1. 获取URL中 ?后的携带参数; 这是我见过最简洁的了,若有更简洁的请及时留言并附上代码怼我
// 获取URL的查询参数
let params={}
location.search.replace(/([^?&=]+)=([^&]+)/g, (_,k,v) => parmas[k] = v);
cosnole.log(params) // ?a=b&c=d&e=f => {a: "b", c: "d", e: "f"}
2. 对多个条件筛选用 Array.includes
// 优化前
function test(fruit) {
if (fruit == 'apple' || fruit == 'strawberry') {
console.log('red');
}
}
// 优化后
function test(fruit) {
const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries'];
if (redFruits.includes(fruit)) {
console.log('red');
}
}
3. 更少的嵌套,尽早返回
// 优化前
function test(fruit, quantity) {
const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries'];
if (!fruit) throw new Error('No fruit!');
if (redFruits.includes(fruit)) {
if (quantity > ) {
console.log('big quantity');
}
}
}
// 优化后
function test(fruit, quantity) {
const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries'];
if (!fruit) throw new Error('No fruit!'); // condition 1: throw error early
if (!redFruits.includes(fruit)) return; // condition 2: stop when fruit is not redif (quantity > ) {
console.log('big quantity');
}
}
4. 使用默认的函数参数和解构
// 优化前
function test(fruit,quantity ) {
const q = quantity || ;
console.log ( );
if (fruit && fruit.name) {
console.log (fruit.name);
} else {
console.log('unknown');
}
}
// 优化后
function test({name} = {},quantity = ) {
console.log (name || 'unknown');
console.log (quantity );
}
5. 选择 Map 或对象字面量,而不是 Switch 语句 或者 if else
// 优化前
function test(color) {
switch (color) {
case 'red':
return ['apple', 'strawberry'];
case 'yellow':
return ['banana', 'pineapple'];
case 'purple':
return ['grape', 'plum'];
default:
return [];
}
}
// 优化后 方式1
const fruitColor = {
red: ['apple', 'strawberry'],
yellow: ['banana', 'pineapple'],
purple: ['grape', 'plum']
};
function test(color) {
return fruitColor[color] || [];
}
// 优化后 方式2
const fruitColor = new Map()
.set('red', ['apple', 'strawberry'])
.set('yellow', ['banana', 'pineapple'])
.set('purple', ['grape', 'plum']); function test(color) {
return fruitColor.get(color) || [];
}
// if... if else... else... 优化方法
const actions = new Map([
[, () => {
// ...
}],
[, () => {
// ...
}],
[, () => {
// ...
}]
])
actions.get(val).call(this)
6.数组 串联(每一项是否都满足)使用 Array.every ; 并联(有一项满足)Array.some 过滤数组 每项设值
// 每一项是否满足
[,,].every(item=>{return item > }) // false
// 有一项满足
[,,].some(item=>{return item > }) // true
// 过滤数组
[,,].filter(item=>{return item > }) // [3]
// 每项设值
[,,].fill(false) // [false,false,false]
7. 数组去重
Array.from(new Set(arr))
[...new Set(arr)]
8.数组合并
[,,,].concat([,]) // [1,2,3,4,5,6]
[...[,,,],...[,]] // [1,2,3,4,5,6]
[,,,].push.apply([,,,],[,]) // [1,2,3,4,5,6]
9.数组求和
[,,,].arr.reduce(function (prev, cur) {
return prev + cur;
},) //
10.数组排序
[,,,].sort(); // [1, 2,3,4],默认是升序
[,,,].sort((a, b) => b - a); // [4,3,2,1] 降序
11.数组 判断是否包含值
[,,].includes() //false
[,,].indexOf() //-1 如果存在换回索引
[, , ].find((item)=>item===)) //3 如果数组中无值返回undefined
[, , ].findIndex((item)=>item===)) //2 如果数组中无值返回-1
12.类数组转化为数组
Array.prototype.slice.call(arguments) //arguments是类数组(伪数组)
Array.prototype.slice.apply(arguments)
Array.from(arguments)
[...arguments]
13.对象和数组转化
Object.keys({name:'张三',age:}) //['name','age']
Object.values({name:'张三',age:}) //['张三',14]
Object.entries({name:'张三',age:}) //[[name,'张三'],[age,14]]
14.扁平化n维数组
[,[,]].flat() //[1,2,3]
[,[,,[,]].flat() //[1,2,3,4,5]
[[,,[,[...]].flat(Infinity) //[1,2,3,4...n]
结语: 有不懂或有错误之处欢迎留言指正;希望看后对大家有用
文章部分参考:http://blog.jobbole.com/114671/
优化 JS 条件语句及JS 数组常用方法, ---- 看完绝对对日后开发有用的更多相关文章
- 优化 JS 条件语句的 5 个技巧
优化 JS 条件语句的 5 个技巧 原创: 前端大全 前端大全 昨天 (给前端大全加星标,提升前端技能) 编译:伯乐在线/Mr.Dcheng http://blog.jobbole.com/11467 ...
- JS条件语句优化
1.对多个条件使用Array.includes eg: function test(fruit){ ...
- js条件语句之职责链数组
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js条件语句,用if...else if....else方程ax2+bx+c=0一元二次方程。求根
if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if...else if... ...
- JAVAscript学习笔记 js条件语句 第三节 (原创) 参考js使用表 (2017-09-14 15:55)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js条件语句初步练习
var a=18 if(a<10){ alert("便宜") } else{ ...
- 廖雪峰js教程笔记6 generator一个坑 看完python在回来填坑
generator(生成器)是ES6标准引入的新的数据类型.一个generator看上去像一个函数,但可以返回多次. ES6定义generator标准的哥们借鉴了Python的generator的概念 ...
- vue条件语句、循环语句、计算属性、侦听器监听属性
因为 v-if 和v-for是一个指令,所以必须将它添加到一个元素上.但是如果想切换多个元素呢?此时可以把一个 <template> 元素当做不可见的包裹元素,并在上面使用 v-if.最终 ...
- JS 优化条件语句的5个技巧
前言 在使用 JavaScript 的时候,有时我们会处理大量条件语句,这里有5个技巧帮助我们编写更简洁的条件语句. 一.对多个条件使用 Array.includes 例子: function con ...
随机推荐
- 循环链表C语言实现
按照单链表的设计,稍加改动.和单向链表不一样的地方,头节点不指向NULL,而是指向自己head 循环链表的判满 1)判断next是不是头结点,2)判断size /* * CycleLinkList.h ...
- 11、kubernetes之dashboard
一.准备dashboard使用的证书 # cd /etc/kubernetes/pki/ pki]# (umask 077; openssl genrsa -out dashboard.key 204 ...
- 正则表达式中常用的模式修正符有i、g、m、s、x、e详解
正则表达式中常用的模式修正符有i.g.m.s.x.e等.它们之间可以组合搭配使用. 它们的作用如下: //修正符:i 不区分大小写的匹配; //如:"/abc/i"可以与abc或a ...
- ssh框架中的分页查询
ssh中的分页查询是比较常用的,接下来我用代码来介绍如何实现一个分页查询 首先建立一个Model用来储存查询分页的信息 package com.haiziwang.qrlogin.utils; imp ...
- 鬼知道NOI会不会成为下一个奥数
认真写作文不可能的,这辈子不可能认真写作文的. (月考,期末考,高考即将到达战场,真香警告) 以下应该成为原稿!!! 真.喜欢写感悟,但我感觉我可能把它写的有点商业化,商业化的文章不可能放的,所以我尽 ...
- AM中修改套料板的尺寸
- okgo网络请求框架的实现
第一步:添加依赖: implementation 'com.lzy.net:okgo:3.0.4' implementation 'com.lzy.net:okrx2:2.0.2' implement ...
- 正向代理与反向代理以及Nginx【总结】(转)
今天在了解Nginx的时候,涉及到反向代理的问题,看到一篇博文写的清晰明了,转载记录一下,后续继续学习,再次感谢博主的分享. 原文地址:https://www.cnblogs.com/Anker/p/ ...
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期
区分单例还是多例对象 单例的几个状态 初始化方法和销毁方法 设置成我们定义的方法 测试 有创建和初始化.但是没有销毁,.对象一直没有销毁的方法 main方法是一切应用程序的入门.当main方法结束后. ...
- 利用jquery的淡入淡出函数(fadeIn和fadeOut)--实现轮播
首先说下,我在网上找的例子全是用的UL 实现,其实大可不必,只要是能包含img标签的HTML标签都可以做轮播效果.利用jquery的淡入淡出函数(fadeIn和fadeOut).废话也不多说,边上代码 ...