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延时重复执行函数 lLoopRun.js
Jun 29 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
Jul 11 Javascript
jQuery操作JSON的CRUD用法实例
Feb 25 Javascript
JavaScript 常见安全漏洞和自动化检测技术
Aug 21 Javascript
JS动态增删表格行的方法
Mar 03 Javascript
Js获取当前日期时间及格式化代码
Sep 17 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
Sep 26 Javascript
原生js实现返回顶部缓冲效果
Jan 18 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
Aug 16 Javascript
vue router自动判断左右翻页转场动画效果
Oct 10 Javascript
Vue实现购物车详情页面的方法
Aug 20 Javascript
vue实现购物车功能(商品分类)
Apr 20 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
PHP新手上路(十四)
2006/10/09 PHP
介绍几个array库的新函数 php
2006/12/29 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
基于php使用memcache存储session的详解
2013/06/25 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
PHP微信分享开发详解
2017/01/14 PHP
JavaScript 继承详解(三)
2009/07/13 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
Python中使用Beautiful Soup库的超详细教程
2015/04/30 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
python模块之re正则表达式详解
2017/02/03 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
Tensorflow:转置函数 transpose的使用详解
2020/02/11 Python
基于pytorch中的Sequential用法说明
2020/06/24 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
计算机专业毕业生自荐信
2013/12/31 职场文书
少先队入队活动方案
2014/02/08 职场文书
承诺书格式范文
2014/06/03 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
《刷子李》教学反思
2016/02/20 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
MySQL学习必备条件查询数据
2022/03/25 MySQL
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL