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 相关文章推荐
javascript中为某个元素指定事件的三种方式
Aug 07 Javascript
javascript数组详解
Oct 22 Javascript
jQuery实现3D文字特效的方法
Mar 10 Javascript
javascript实现简单的页面右下角提示信息框
Jul 31 Javascript
jquery实现横向图片轮播特效代码分享
Nov 19 Javascript
JSONP和批量操作功能的实现方法
Aug 21 Javascript
最好用的Bootstrap fileinput.js文件上传组件
Dec 12 Javascript
关于ES6的六个小特性(二)
Feb 20 Javascript
vue.js全局API之nextTick全面解析
Jul 07 Javascript
Vue 父子组件的数据传递、修改和更新方法
Mar 01 Javascript
Koa 中的错误处理解析
Apr 09 Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 15 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统计时间和内存使用情况示例分享
2014/03/13 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
Function.prototype.call.apply结合用法分析示例
2013/07/03 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
js 作用域和变量详解
2017/02/16 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
Python实现的双色球生成功能示例
2017/12/18 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
new修饰符是起什么作用
2015/06/28 面试题
软件项目实施计划书
2014/05/02 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
社保转移委托书范本
2014/10/08 职场文书