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 相关文章推荐
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
May 13 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
Mar 05 Javascript
JavaScript设计模式之单例模式实例
Sep 24 Javascript
Javascript动画的实现原理浅析
Mar 02 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
Mar 10 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
Dec 08 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
Aug 23 Javascript
js继承实现方法详解
Dec 16 Javascript
JQuery ZTree使用方法详解
Jan 07 Javascript
vue.js利用defineProperty实现数据的双向绑定
Apr 28 Javascript
vue router使用query和params传参的使用和区别
Nov 13 Javascript
Vue组件之自定义事件的功能图解
Feb 01 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
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
jQuery中animate()方法用法实例
2014/12/24 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
vue 项目@change多个参数传值多个事件的操作
2021/01/29 Vue.js
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
深入了解Python数据类型之列表
2016/06/24 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
python Django 反向访问器的外键冲突解决
2020/05/20 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
python能开发游戏吗
2020/06/11 Python
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
社区中秋节活动方案
2014/01/29 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
投标邀请书范本
2015/02/02 职场文书
行政助理岗位职责
2015/02/10 职场文书
语文教师求职信范文
2015/03/20 职场文书
亮剑观后感600字
2015/06/05 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
Python实现滑雪小游戏
2021/09/25 Python
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis