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操作cookie_获取与修改代码
May 21 Javascript
js event事件的传递与冒泡处理
Dec 06 Javascript
jquery 锁定弹出层实现代码
Feb 23 Javascript
js实现的早期滑动门菜单效果代码
Aug 27 Javascript
JavaScript对象数组的排序处理方法
Oct 21 Javascript
js判断手机号运营商的方法
Oct 23 Javascript
快速掌握Node.js模块封装及使用
Mar 21 Javascript
vue-resource拦截器设置头信息的实例
Oct 27 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
Dec 19 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
Jul 29 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
Mar 02 Javascript
前端canvas中物体边框和控制点的实现示例
Aug 05 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
删除无限级目录与文件代码共享
2006/07/12 PHP
BBS(php & mysql)完整版(六)
2006/10/09 PHP
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
PHP引用符&的用法详细解析
2013/08/22 PHP
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
python33 urllib2使用方法细节讲解
2013/12/03 Python
python中bisect模块用法实例
2014/09/25 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
2015/05/15 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
白色公司:The White Company
2017/10/11 全球购物
EJB timer的种类
2014/10/28 面试题
廉政教育心得体会
2014/01/01 职场文书
减负增效提质方案
2014/05/23 职场文书
甘南现象心得体会
2014/09/11 职场文书
销售顾问工作计划书
2014/09/15 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
预备党员考察意见范文
2015/06/01 职场文书
教师岗位说明书
2015/09/30 职场文书