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实战_读书笔记2 选择器
Jan 22 Javascript
jQuery参数列表集合
Apr 06 Javascript
基于jquery插件实现常见的幻灯片效果
Nov 01 Javascript
css配合jquery美化 select
Nov 29 Javascript
json中换行符的处理方法示例介绍
Jun 10 Javascript
JS 使用for循环遍历子节点查找元素
Sep 06 Javascript
node.js中的fs.unlinkSync方法使用说明
Dec 15 Javascript
原生js实现图片轮播特效
Dec 18 Javascript
JS实现探测网站链接的方法【测试可用】
Nov 08 Javascript
微信小程序设置滚动条过程详解
Jul 25 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
Oct 15 Javascript
Map与WeakMap类型在JavaScript中的使用详解
Nov 18 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
Oracle Faq(Oracle的版本)
2006/10/09 PHP
php+mysql写的简单留言本实例代码
2008/07/25 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
Python聊天室实例程序分享
2016/01/05 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
实习单位推荐信范文
2013/11/27 职场文书
文化宣传方案
2014/03/13 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
买卖合同协议书范本
2014/10/18 职场文书
北大自主招生自荐信
2015/03/04 职场文书
公司禁烟通知
2015/04/23 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏