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 iframe的相互操作浅析
Oct 14 Javascript
javascript中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
不使用浏览器运行javascript代码的方法
Jul 24 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
Aug 14 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
Mar 14 Javascript
vue组件中的样式属性scoped实例详解
Oct 30 Javascript
Angular7.2.7路由使用初体验
Mar 01 Javascript
浅谈javascript中的prototype和__proto__的理解
Apr 07 Javascript
BootstrapValidator验证用户名已存在(ajax)
Nov 08 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
Sep 21 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
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
合作指挥官:孟斯克
2020/03/16 星际争霸
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
新东网科技Java笔试题
2012/07/13 面试题
重阳节登山活动方案
2014/02/03 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
文明单位创建材料
2014/12/24 职场文书
求职信范文怎么写
2015/03/19 职场文书
理想国读书笔记
2015/06/25 职场文书
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技