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 相关文章推荐
js文字滚动停顿效果代码
Jun 28 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
May 14 Javascript
JavaScript实现网页上的浮动广告的简单方法
Jun 14 Javascript
基于javascript实现页面加载loading效果
Sep 15 Javascript
AngularJS动态加载模块和依赖的方法分析
Nov 08 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
Feb 10 Javascript
JavaScript中三个等号和两个等号你了解多少
Jul 04 Javascript
基于javascript 显式转换与隐式转换(详解)
Dec 15 Javascript
vue通信方式EventBus的实现代码详解
Jun 10 Javascript
JS字符串常用操作方法实例小结
Jun 24 Javascript
微信小程序JS加载esmap地图的实例详解
Sep 04 Javascript
JavaScript 严格模式(use strict)用法实例分析
Mar 04 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
BBS(php & mysql)完整版(五)
2006/10/09 PHP
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
angularjs 缓存的使用详解
2018/03/19 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
python 多进程通信模块的简单实现
2014/02/20 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
Python 读写文件的操作代码
2018/09/20 Python
对python中dict和json的区别详解
2018/12/18 Python
python操作yaml说明
2020/04/08 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
香港中原电器网上商店:Chung Yuen
2019/06/26 全球购物
大学竞选班长演讲稿
2014/04/24 职场文书
教师读书活动总结
2014/05/07 职场文书
先进基层党组织材料
2014/12/25 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
新年晚会主持词开场白
2015/05/28 职场文书