JavaScript 巧学巧用


Posted in Javascript onMay 23, 2017

前言

由于工作和生活上的一些变化,最近写文章的频率有点下降了,实在不好意思,不过相信不久就会慢慢恢复过来,感谢大家一直以来的关注和支持。
本文主要给大家分享一下在编写JavaScript代码的时候存在的一些方法和技巧,虽然有时候条条大路都通向罗马,但是也许总会有那么一条最短的路径可走。希望通过以下几点JavaScript技巧让大家的代码“化繁为简,化简为精”。

巧学巧用

1. new Set()

可能有人知道ES6中提供了新的数据结构 Set,但是能够灵活运用的人或许不多。利用Set数据结构我们能够轻松的去重一个数组,比如:

let arr = [1, 2, 2, 3];
let set = new Set(arr);
let newArr = Array.from(set); // Array.from方法可以将 Set 结构转为数组。

console.log(newArr); // [1, 2, 3]

2. Object.assign()

Object.assign()也是ES6中提供的对象的扩展方法,其可以用于对象的合并拷贝,比如:

let obj1 = {a: 1};
let obj2 = {b: 2};
let obj3 = Object.assign({}, obj1, obj2);

console.log(obj3); // {a: 1, b: 2}

3. map()

map方法用于遍历数组,有返回值,可以对数组的每一项进行操作并生成一个新的数组,有些时候可以代替for和forEach循环,简化代码,比如:

let arr3 = [1, 2, 3, 4, 5];
let newArr3 = arr3.map((e, i) => e * 10); // 给数组每一项乘以10
console.log(newArr3); // [10, 20, 30, 40, 50]

4. filter()

filter方法同样用于遍历数组,顾名思义,就是过滤数组,在每一项元素后面触发一个回调函数,通过判断,保留或移除当前项,最后返回一个新的数组,比如:

let arr4 = [1, 2, 3, 4, 5];
let newArr4 = arr4.filter((e, i) => e % 2 === 0); // 取模,过滤余数不为0的数
console.log(newArr4); // [2,4]

5. some()

some方法用于遍历数组,在每一项元素后面触发一个回调函数,只要一个满足条件就返回true,否则返回false,类似于 || 比较,比如:

let arr5 = [{result: true}, {result: false}];

let newArr5 = arr5.some((e, i) => e.result); // 只要一个为true,即为true

console.log(newArr5); // true

6.every()

every方法用于遍历数组,在每一项元素后面触发一个回调函数,只要一个不满足条件就返回false,否则返回true,类似于 && 比较,比如:

let arr6 = [{result: true}, {result: false}];

let newArr6 = arr6.every((e, i) => e.result); // 只要一个为false,即为false

console.log(newArr6); // false

7. ~~运算符

~符号用在JavaScript中有按位取反的作用,~~即是取反两次,而位运算的操作值要求是整数,其结果也是整数,所以经过位运算的都会自动变成整数,可以巧妙的去掉小数部分,类似于parseInt,比如:

let a = 1.23;
let b = -1.23;

console.log(~~a); // 1
console.log(~~b); // -1

8. ||运算符

巧妙的使用 || 运算符我们可以给变量设置默认值,比如:

let c = 1;
let d = c || 2; // 如果c的值为true则取存在的值,否则为2

console.log(d); // 1

9. ...运算符

...运算符是ES6中用于解构数组的方法,可以用于快速获取数组的参数,比如:

let [num1, ...nums] = [1, 2, 3];

console.log(num1); // 1
console.log(nums); // [2, 3]

10. 三元运算符

该运算符应该大家都比较熟悉,在默写情况下可以简化if else的写法,比如:

let e = true,
  f = '';

if (e) {
  f = 'man';
} else {
  f = 'woman';
}

// 等同于
e ? f = 'man' : f = 'woman';

结语

本文只列出了JavaScript语法中比较常见的10点提升编码效率的方法进行了简单地阐述,当然每一个知识点都可以进行相应的展开与探究,希望大家在巧学的同时达到巧用的效果。

Javascript 相关文章推荐
解决AJAX中跨域访问出现'没有权限'的错误
Aug 20 Javascript
javascript void(0)的妙用
Oct 21 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
Nov 28 Javascript
JavaScript 学习笔记(六)
Dec 31 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
Apr 26 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
Apr 26 Javascript
JS获取各种浏览器窗口大小的方法
Jan 14 Javascript
js修改原型的属性使用介绍
Jan 26 Javascript
JQuery实现动态适时改变字体颜色的方法
Mar 10 Javascript
利用vue实现模态框组件
Dec 19 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 jQuery
手写简单的jQuery雪花飘落效果实例
Apr 22 jQuery
JS获取短信验证码倒计时的实现代码
May 22 #Javascript
原生JS实现不断变化的标签
May 22 #Javascript
jQuery实现简单的滑动导航代码(移动端)
May 22 #jQuery
vue2.0 与 bootstrap datetimepicker的结合使用实例
May 22 #Javascript
Vue实现动态显示textarea剩余字数
May 22 #Javascript
bootstrap栅格系统示例代码分享
May 22 #Javascript
vue+axios实现登录拦截的实例代码
May 22 #Javascript
You might like
PHP4中实现动态代理
2006/10/09 PHP
php生成短网址示例
2014/05/05 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
php格式化电话号码的方法
2015/04/24 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
聊一聊Vue.js过渡效果
2016/09/07 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
js实现图片粘贴上传到服务器并展示的实例
2017/11/08 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
python 控制语句
2011/11/03 Python
Python异常处理总结
2014/08/15 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
大学生毕业求职自荐书范文
2014/02/04 职场文书
会计专业导师推荐信
2014/03/08 职场文书
酒店节能降耗方案
2014/05/08 职场文书
正规借条模板
2015/05/26 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
经典爱情感言
2015/08/03 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
swagger如何返回map字段注释
2021/07/03 Java/Android
Win11开始菜单添加休眠选项
2022/04/19 数码科技