JavaScript中使用Spread运算符的八种方法总结


Posted in Javascript onJune 18, 2020

Spread运算符

允许从 iterable 表达式(如另一个数组文本)初始化部分数组文本,或允许表达式扩展到多个参数(在函数调用中)。

语法

var array = [[arg0ToN ,] ...iterable [, arg0ToN]]
func([args ,] ...iterable [, args | ...iterable])

参数

iterable

必需。 迭代对象。

arg0ToN

可选。 数组文本的一个或多个元素。

args

可选。 函数的一个或多个参数。

本文将带大家了解如何在JavaScript中使用Spread(延展操作)运算符。

ES6中引入了延展操作运算符(...)。

延展操作运算符将可迭代的对象扩展为其单独的元素,可迭代对象是可以使用 for 循环进行循环的任何对象。

可迭代的示例:Array,String,Map,Set,DOM节点。

1.在log中使用延展操作运算符

你可以在 console.log 中对可迭代对象使用延展操作操作符

let fruits = ['?', '?', '?', '?'];
console.log(...fruits); //? ? ? ?

2.用延展操作运算符复制数组

let fruits = ['?', '?', '?', '?'];
let fruitsCopy = [ ...fruits ];
console.log(...fruitsCopy); //? ? ? ?

复制对象

let user = {name : "John", age : 20 }
let userCopy = {...user}

延展操作运算符不执行深度复制。

3.延展操作运算符合并

let fruits = ['?', '?', '?', '?'];
let vegetables = ['?', '?', '?'];
let fruitsAndVeg = [...fruits, ...vegetables]

合并对象

合并对象时,如果已经存在某个键,则将其替换为具有相同键的最后一个对象。

let user1 = {name : "John", age : 20 };
let user2 = {name : "Ram", salary: '20K' };
let userCopy = {...user1, ...user2};
userCopy ; // {name : "Ram", age :20 , salary : '20K'};

4.延展操作运算符作为参数传递

function sum(a, b) {
 return a+b;
}
let num = [1,2];
sum(...num); // 3

与 math 函数一起使用

let num = [5,9,3,5,7];
Math.min(...num);
Math.max(...num);

5.延展操作运算符在解构变量中

let [melon, ...fruits ] = ['?', '?', '?', '?'];
melon; //?
fruits; // [ '?', '?', '?']

解构对象

let user = {name : "Ram", age: 20, salary: '20K', job : "Tester" };
let { name, age, ...details } = user;
name; // Ram
age; // 20
details; // {salary: '20K', job : 'Tester'};

6.将NodeList对象转换为数组

NodeList类似于数组,但是没有 Array 的所有方法,例如 forEach,map,filter 等。

let nodeList = document.querySelectorAll('.class')
var nodeArray = [...nodeList]

7.将字符串转换为字符

字符串也是可迭代的对象,因此我们也可以使用 ... 来字符串。

let name = "Ram";
let chars = [...name]; // ["R", "a", "m"]

8.从数组中删除重复项

let num = [1, 3, 1, 3, 3, 1];
let uniqueNum = [...new Set(num)];
uniqueNum; //[ 1, 3 ]

总结

到此这篇关于JavaScript中使用Spread运算符的八种方法就介绍到这了,更多相关JavaScript使用Spread运算符内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript 打开页面window.location和window.open的区别
Mar 17 Javascript
jQuery中offsetParent()方法用法实例
Jan 19 Javascript
javascript实现input file上传图片预览效果
Dec 31 Javascript
js实现图片缓慢放大缩小效果
Aug 02 Javascript
两行代码轻松搞定JavaScript日期验证
Aug 03 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
Mar 21 jQuery
判断div滑动到底部的scroll实例代码
Nov 15 Javascript
Vue.js中的computed工作原理
Mar 22 Javascript
浅谈在react中如何实现扫码枪输入
Jul 04 Javascript
解决vue select当前value没有更新到vue对象属性的问题
Aug 30 Javascript
js操作table中tr的顺序实现上移下移一行的效果
Nov 22 Javascript
Nuxt.js 数据双向绑定的实现
Feb 17 Javascript
通过实例了解JS执行上下文运行原理
Jun 17 #Javascript
从0搭建vue-cli4脚手架
Jun 17 #Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
Jun 17 #Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
Jun 17 #Javascript
vue移动端的左右滑动事件详解
Jun 17 #Javascript
详解JavaScript中的Object.is()与"==="运算符总结
Jun 17 #Javascript
vue-iview动态新增和删除的方法
Jun 17 #Javascript
You might like
加速XP搜索功能堪比vista
2007/03/22 PHP
mysql 字段类型说明
2007/04/27 PHP
附件名前加网站名
2008/03/23 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
php实现数字补零的方法总结
2018/09/12 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
详解javascript高级定时器
2015/12/31 Javascript
javascript this详细介绍
2016/09/19 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
Javascript地址引用代码实例解析
2020/02/25 Javascript
详解Python中类的定义与使用
2017/04/11 Python
Python微信公众号开发平台
2018/01/25 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
python中pop()函数的语法与实例
2020/12/01 Python
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
建筑自我鉴定
2013/10/19 职场文书
国贸专业的职业规划书
2014/03/15 职场文书
中秋节主持词
2014/04/02 职场文书
质量负责人任命书
2014/06/06 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
物流业务员岗位职责
2015/04/03 职场文书
同意离婚答辩状
2015/05/22 职场文书
生产设备维护保养制度
2015/08/06 职场文书