ES6扩展——数组扩展
1、结合扩展运算符使用。通过扩展运算符,在调用函数的时候,把一个数组展开,然后作为这个函数的参数
//结合扩展运算符使用
function foo(a,b,c){
console.log(a); //1
console.log(b); //3
console.log(c); //2
}
//通过扩展运算符,在调用函数的时候,把一个数组展开,然后作为这个函数的参数
foo(...[1,3,2]);
实际应用:比如从服务端拿到了json数据,它代表用户信息的集合,相对于对象,按照一定规则使用数组,长度会更短一些,就更节省流量
//实际应用:比如从服务端拿到了json数据,它代表用户信息的集合,相对于对象,按照一定规则使用数组,长度会更短一些,就更节省流量
//比如数据交互的时候规定好用户的数据格式,第一个代表名字;第二个代表年龄;第三个是数组,代表他的爱好;第四个是他的简短描述 const user = ['小明',14,['吃饭','打游戏'],'我没有女朋友'];
function say(name,age,hobby,desc){
console.log(`我叫${ name },我今年${age}岁,我喜欢${ hobby.join('和') },${ desc }`);
}
//es5写法:
say(user[0],user[1],user[2],user[3]); //我叫小明,我今年14岁,我喜欢吃饭和打游戏,我没有女朋友
//es6写法:
say(...user);
//以前还会使用apply这种方法,基本上所有函数都可以调用apply
//第一个参数跟一个对象,它可以改变调用方法时this的指向,但是传undefined的时候就不会改变
//第二个参数就是传方法的参数,接收的是一个数组,跟扩展运算符差不多,会把数组展开,作为函数的参数
//跟call很相似,不过call的后面就是跟参数的列表,而apply可以跟数组
say.apply(null,user); //对比一下两种方式,更推荐使用扩展运算符
const arr = [1,2,233,3,4,5];
//Math.max()接收一堆参数,然后会帮你把里面的最大值求出来
//当参数是不确定个数的时候,就可以用扩展运算符或者apply展开数组,
console.log(Math.max(...arr)); //233
console.log(Math.max.apply(null,arr)); //233,不改变this 的指向,把arr传过去
2、使用扩展运算符复制或合并数组
//复习,使用扩展运算符来合并复制数组
const arr1 = [1,2,3,4];
const arr2 = [4,3,2,1];
const arr3 = [2.2,'123',false];
//复制
const cArr1 = [1,2,3, ...arr3];
const cArr2 = [...arr1];
const [...cArr3] = arr3;
//合并
const cArr4 = [...arr1,...arr2,...arr3];
3、es6新特性:扩展运算符可以将生成器函数传出来的值作为数组项,形成数组,
可以通过生成器让一个函数暂停,通过yield关键字暂停,同时暂停的时候还可以传出去一个值
//es6新特性:扩展运算符可以将生成器函数传出来的值作为数组项,形成数组,
//可以通过生成器让一个函数暂停,通过yield关键字暂停,同时暂停的时候还可以传出去一个值
function *g() {
console.log(1);
//生成器函数通过yield关键字就可以暂停这个函数的执行
yield 'hi~'; //到这里函数就停止了,除非.next
console.log(2);
yield 'imooc~';
} //调用生成器,生成的就是一个迭代器对象
const arr9 = [...g()]; //通过扩展运算符调用生成器函数,这个时候arr就变成hi~和imooc组成的数组了
console.log(arr9); //['hi~','imooc~']
//通过.next方法可以继续执行这个函数
const gg = g();
gg.next(); //1
setTimeout(function(){
gg.next(); //2
},1000); //借助生成器和Promise可以极大的改变书写异步流程的方式,从某个角度讲是解决了回调地狱
4、Set
es6提供新的数据结构Set集合,可以使用扩展运算符把它转成一个数组
Set有一个特性是它里面的元素是不能重复的,所以可以用来去重
//es6提供新的数据结构Set集合,可以使用扩展运算符把它转成一个数组
//Set有一个特性是它里面的元素是不能重复的,所以可以用来去重。除了数组之外,还可以传入一个类数组。 let set = new Set([1,2,2,3]);
console.log(set); //{1,2,3}
//可以用set去重,去完重再转为数组(用扩展运算符)
console.log([...set]); //[1,2,3]
ES6扩展——数组扩展的更多相关文章
- ES6之数组扩展方法【一】(相当好用)
form 转化为真正的数组 先说一下使用场景,在Js中,我们要经常操作DOM,比如获取全部页面的input标签,并且找到类型为button的元素,然后给这个按钮注册一个点击事件,我们可能会这样操作: ...
- ES6(五) 数组扩展
Array.of方法用于将一组值,转换为数组. Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES ...
- call,apply,bind与es6的数组扩展运算符...
js中每一个Function对象都有一个apply个一个call方法: function.apply(thisObj,[argArray]); function.call(thisObj,arg1,a ...
- 【es6】数组扩展
只有一个参数,为数组中的值.
- ES6数组扩展
前面的话 数组是一种基础的JS对象,随着时间推进,JS中的其他部分一直在演进,而直到ES5标准才为数组对象引入一些新方法来简化使用.ES6标准继续改进数组,添加了很多新功能.本文将详细介绍ES6数组扩 ...
- es6核心特性-数组扩展
1. Array.from() : 将伪数组对象或可遍历对象转换为真数组 如果一个对象的所有键名都是正整数或零,并且有length属性,那么这个对象就很像数组,称为伪数组.典型的伪数组有函数的argu ...
- ES6对数组的扩展(简要总结)
文章目录 数组的扩展(ES6) 1. 扩展运算符 2. Array.from 3. Array.of() 4. copyWithin() 5. find() 和 findIndex() 6. fill ...
- ES6 - 数组扩展(扩展运算符)
扩展运算符 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算(函数),将一个数组转为用逗号分隔的参数序列. rest: 变量将多余的参数放入数组中. spread(扩展): ...
- ES6中数组和对象的扩展运算符拷贝问题以及常用的深浅拷贝方法
在ES6中新增了扩展运算符可以对数组和对象进行操作.有时候会遇到数组和对象的拷贝,可能会用到扩展运算符.那么这个扩展运算符到底是深拷贝还是浅拷贝呢? 一..使用扩展运算符拷贝 首先是下面的代码. le ...
随机推荐
- 测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机
龙芯3A5000 已经上市,与龙芯3A5000配套的三大编译器GCC.LLVM.GoLang和三大虚拟机Java.JavaScript..NET均已完成开发,从老伙计哪里搞来一台3A5000 机器,安 ...
- 【Lucas组合数定理】组合-FZU 2020
组合 FZU-2020 题目描述 给出组合数C(n,m), 表示从n个元素中选出m个元素的方案数.例如C(5,2) = 10, C(4,2) = 6.可是当n,m比较大的时候,C(n,m)很大!于是x ...
- python里的StringIO
Python2中StringIO调用方法如下: import StringIO iost = StringIO.StringIO() Python3中已将StringIO归入io,调用方法如下: im ...
- python通过sha1和base64生成签名
一.python生成时间戳 # 案例 生成时间戳 import time t = time.time() print(t) # 原始时间数据 print(int(t)) # 秒级时间戳 print(i ...
- curl 简单介绍
1.初始化2.设置变量3.执行并获取结果4.释放cURL句柄// 1. 初始化$ch = curl_init();// 2. 设置选项,包括URLcurl_setopt($ch, CURLOPT_UR ...
- js hook
//cookie hook (function () { 'use strict'; var cookie_cache = document.cookie; Object.defineProperty ...
- 记录21.07.26 —— Vue/cil
VUE搭载脚手架 搭载环境 下载node node.js下载地址 控制台输入 npm install -g @vue/cil 查看版本 创建vue项目 创建完后会显示启动服务的指令 这个指令可以在pa ...
- Go interface 原理剖析--类型转换
hi, 大家好,我是 haohognfan. 可能你看过的 interface 剖析的文章比较多了,这些文章基本都是从汇编角度分析类型转换或者动态转发.不过随着 Go 版本升级,对应的 Go 汇编也发 ...
- 为什么npm install 经常失败
Hello 您好,我是大粽子.深耕线上商城的攻城狮(程序员)一枚. 前言 这段时间真的是忙,最近能抽时间搞搞大家在自己环境中遇到的各种问题了,我呢就是见不得我的代码在你的电脑运行不起来的.就像姜子牙睡 ...
- 【Lua篇】静态代码扫描分析(一)初步介绍
一.静态代码分析 静态代码分析是一种通过检查代码而不是执行程序来发现源代码中错误的手段.通常可以帮助我们发现常见的编码错误,例如: 语法错误 违反制定的标准编码 未定义的变量 安全性问 ...