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 相关文章推荐
使用jquery实现select添加实现后台权限添加的效果
May 28 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
Mar 22 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
Feb 04 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
Dec 16 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
Mar 28 Javascript
在Python中使用glob模块查找文件路径的方法
Jun 17 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
Dec 13 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
尝试自己动手用react来写一个分页组件(小结)
Feb 09 Javascript
AngularJS模态框模板ngDialog的使用详解
May 11 Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
Aug 27 Javascript
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
PHP新手上路(七)
2006/10/09 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
JavaScript交换变量常用4种方法解析
2020/09/02 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python之wxPython应用实例
2014/09/28 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
保险专业求职信
2014/07/07 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书