ES6 扩展运算符

ES6 数组相关

一、扩展运算符 …

  1. 用于函数调用

将一个数组变为参数序列;可与正常的函数参数结合使用;扩展运算符后面也可以放表达式;如果扩展运算符后面是空数组,不产生任何结果。只有函数调用时,扩展运算符才可以放到圆括号里。

const array1 = [];
const array2 = [];
const arr = [1, 2, 3];function push(array, ...items) {array.push(...items);console.log(...(items + '1')); // 1, 2, 3 1
}push(array1, ...arr); // 1 , 2 , 3 1
push(array2, ...[]); // 1 --> 这个1是拼接的1console.log(array1); // [1, 2, 3]
console.log(array2); // []
  1. 代替 apply 方法

apply 方法的第二个参数把数组转换为函数的时候,有了扩展运算符,可以代替 apply 这个作用

function f(x, y, z) {// ...
}// ES5 的写法
var args = [0, 1, 2];
f.apply(null, args);
// apply 第一个参数是 THIS 指向
// 第二个参数传递的是一个数组// ES6 的写法
let args = [0, 1, 2];
f(...args);
  1. 复制数组

数组是复合数据类型,直接复制只是复制了数组的地址,没有重新创建一个数组。扩展运算符可以提供复制数组的简便方法。如果数组成员是对象,只能复制对象的引用,如果修改了新数组成员,会同步反映到原数组(浅拷贝)

const a1 = [1, 2];
const a2 = a1; // 这里只是复制了a1的地址a2[0] = 2;
console.log(a1); [2, 2];// ES5
var a1 = a1.concat();
a2[0] = 2;
console.log(a1); // [2, 2]// ES6扩展运算符方法
const a2 = [...a1]; // 写法一
const [...a2] = a1; // 写法二
  1. 合并数组

提供了数组合并的新写法

const arr1 = ['a', 'b'];
const arr2 = ['c'];
const arr3 = ['d', 'e'];// ES5 的数组合并
arr1.concat(arr2, arr3);
console.log(arr1); // ['a', 'b', 'c', 'd', 'e']// ES6 的数组合并
const result = [...arr1, ...arr2, ...arr3];
console.log(result); // ['a', 'b', 'c', 'd', 'e']
  1. 结合解构赋值

扩展运算符可以与解构赋值结合生成数组,只能把扩展运算符放在最后,否则会报错

const [first, ...rest] = [1, 2, 3, 4, 5];
console.log(first); // 1
console.log(rest); // [2, 3, 4, 5]const [first, ...middle, last] = [1, 2, 3, 4, 5];
// 报错
  1. 将字符串转为数组
console.log([...'hello']); // ["h", "e", "l", "l", "o"]
  1. 定义了Iterator 接口的对象转换为数组
let nodeList = document.querySelectorAll('div');
let array = [...nodeList];let arrayLike = {'0': 'a','1': 'b','2': 'c',length: 3
};
// 没有部署Iterator接口的类似数组的对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android gone动画_Android动画之淡入淡出

为了更好的说明Android动画的淡入淡出效果,这里以一个场景为例: 界面上有两个View 控件,两个View交替显示,当一个View淡入显示,另一个View淡出不可见。我们把当前要显示的View叫showView, 要隐藏不可见的view叫hideVie…

java各map中存放null值

java中各map中是否可以存储null值情况

windows配置samba客户端_怎样设置Samba文件服务器以使用Windows客户端

输入先前用‘smbpasswd -a’设置的用户名和密码:进入计算机,然后检查网络驱动器是否被正确添加:作为测试,让我们从Samba的手册页创建一个pdf文件,然后保存到/home/xmodulo目录:接下来,我们可以验…

DOM 节点类型及属性

一、节点类型 节点名称节点类型节点文本内容#document (文档节点)9null大写标签名 (元素节点)1null#text (文本节点 )3文本内容#comment (注释节点)8注释的内容 二、获取节点的方式 childNodes ⇒ 获取所有子节点 document.body.childNodeschildren ⇒ 获取所有元素子节点 …

Java8中Collectors详解

文章目录1.averagingDouble2.collectingAndThen3.counting4.groupingBy4.1groupingBy(Function)4.2groupingBy(Function, Collector)4.3groupingBy(Function, Supplier, Collector)5.groupingByConcurrent5.1groupingByConcurrent(Function)5.2groupingByConcurrent(Function, …

DOM 元素以及内容的增删改

一、.createElement() ⇒ 创建元素 const div document.createElement(div); // 创建一个 div 元素二、appendChild() 追加一个元素 | insertBefore(Ele, Target) ⇒ 指定位置插入元素 const div document.createElement(div); // 创建一个 div 元素 document.getElementBy…

js实现图片虚化_Web前端之高斯模糊图片记

题记 前端需求之高斯模糊图片最近工作中有一个需求,客户提交图片,服务器根据图片生成内容,并将内容显示,要求高斯模糊处理用户的图片并作为作品展示的背景,类似于苹果设备上的高斯模糊背景。用户提交的图片分网络图片地…

r语言中残差与回归值的残差图_用R语言做回归分析_iris数据集/longley数据集

机器学习课程2 回归分析【题目1】使用R对内置鸢尾花数据集iris(在R提示符下输入iris回车可看到内容)进行回归分析,自行选择因变量和自变量,注意Species这个分类变量的处理方法。解答:1.iris数据集介绍鸢尾花(iris)是数据挖掘常用到的一个数据…

Java 8————Collectors中的中的joining 方法和mapping方法

先定义好后面做示例要用的数据&#xff1a; List<User> listUser new ArrayList<>(); listUser.add(new User("李白", 20, true)); listUser.add(new User("杜甫", 40, true)); listUser.add(new User("李清照", 18, false)); lis…

BOM -- browser object model

操作浏览器窗口 一、 innerWidth / innerHeight 获取浏览器可视区的宽高(不包含开发者工具区域) window.innerWidth px window.innerHeight px二、 outerWidth / outerHeight 获取浏览器软件界面的宽高 window.outerWidth px window.outerHeight px三、 screenTop / scr…

vue 拓扑组件_vue 集成 vis-network 实现网络拓扑图的方法

vis.js 网站https://visjs.org/vs code 下安装命令npm install vis-network在vue 下引入 vis-network组件const vis require("vis-network/dist/vis-network.min.js");require("vis-network/dist/vis-network.min.css");例子代码使用let DIR "/jtop…

编译器说 Lambda 表达式中的变量必须是 final 的,我偏不信

偶尔&#xff0c;我们需要在 Lambda 表达式中修改变量的值&#xff0c;但如果直接尝试修改的话&#xff0c;编译器不会视而不见听而不闻&#xff0c;它会警告我们说&#xff1a;“variable used in lambda expression should be final or effectively final”。 这个问题发生的…

window 事件

一、 onscroll ⇒ 页面滚动是事件 // 当页面发生滚动就会触发这个事件 window.onscroll function () {console.log(我会随着鼠标滚动改变); }二、 onresize ⇒ 窗口改变事件 // 当窗口大小发生改变就会触发这个事件 window.onresize function () {console.log(我会随着窗口…

pandas series取值_【小学生级】pandas入门到精通备查表——AI未来系列3

在未来面前&#xff0c;每个人都是学生江海升月明&#xff0c;天涯共此时&#xff0c;关注江时&#xff01;引子篇为AI未来系列第三篇&#xff0c;中阶部分开始。pandas的数据分析功能比excel强太多&#xff0c;基本上学会pandas&#xff0c;走遍天下都不怕。这是我的备查字典&…

java中为final变量赋值的几种方式

java中为final变量赋值的几种方式 前言 使用final修饰变量&#xff0c;很多人第一时间想到的就是不可变。然后以为变量必须得在声明的时候就为其赋初始值&#xff0c;其实不然&#xff0c;本文将详细讲解java中使用final修改的变量的赋值问题。 被final修饰的变量的几种赋值方…

instanceof 和 对象转型

一、instanceof 判断某个对象是否属于某个类 father1 instanceof Father; // true// 如果有子类继承父类的话 son instanceof Father; // true二、对象转型 子转父 > 自动转&#xff08;向下转型&#xff09; 父转子 > 强转&#xff08;向上转型&#xff09; 三、Obj…

java类验证和装载顺序_Java JVM类加载顺序详解

首页 > 基础教程 > 基础知识 > JDK&JRE&JVMJava JVM类加载顺序详解JVM加载就是寻找一个类或是一个接口的二进制形式并用该二进制形式来构造代表这个类或是这个接口的class对象的过程&#xff0c;其中类或接口的名称是给定了的。当然名称也可以通过计算得到&am…

从lambda表达式看final关键字

Variable used in lambda expression should be final or effectively final 想必大家在开发java程序的时候应该经常见到。 这是因为在lambda的匿名表达式里需要传入final的对象&#xff0c;那么这是为什么呢&#xff1f; 因为lambda是匿名表达式&#xff0c;它是在新开的一个…

linux中负载值为多少正常_Linux系统中load average平均负载

系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中&#xff1a;1)它没有在等待I/O操作的结果2)它没有主动进入等待状态(也就是没有调用wait)3)没有被停止(例如&#xff1a;等待终止)英译文&#xff1a;http://blog…

lambda里面赋值局部变量必须是final原因

public class LambdaTest {public static void main(String ... args){int portNumber 1337;Runnable r ()-> {portNumber 1338;System.out.println(portNumber);};r.run();} }如上代码&#xff0c;lambda里面要访问局部变量会报如照片错误&#xff1a; 在介绍为什么会报…