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 ...
随机推荐
- 微信小程序云开发-数据库-用户更新数据并提交
一.wxml增加input输入框和[更新商品价格]按钮 在商品详情页新增[更新商品价格]按钮,wxml新增部分代码,input绑定事件,用于获取用户输入的内容.按钮绑定事件,用于更新商品价格. 二. ...
- JDBC连接流程
ConectionFactory cf = new ConectionFactory();//创建数据库连接Connection con = cf.getConection();//打开水数据库的连接 ...
- 记一次错误:mid=front+(rear-front)>>1;
设rear=6,front=4,mid=front+(rear-front)>>1; mid应该等于5的,但结果却是3. 错误原因:"+"运算符的优先级高于" ...
- 【模拟】报名签到 luogu-4445
AC代码 #include <bits/stdc++.h> using namespace std; #define ms(a,b) memset(a,b,sizeof(a)) typed ...
- odoo14里面的消息机制
odoo里面 字段追踪.消息通知机制: 一.使用方式:1.在定义模型的py文件里继承mail模型 class DemoModle(models.Model): """ ...
- odoo视图 “动作” 里添加菜单按钮:案例
####################################################################################odoo中常用方法,在动作里面添 ...
- Pelles C 五光十色中的一抹经典
我只是一个程序员,没有多少文化修养,根本不会组织出多么精彩动人的辞藻,所以废话不多说,开整. 前段时间,我开始了自己的毕业设计项目,项目的主题和内容是围绕数码防伪追溯原理制作一个识别装置,而这个装置并 ...
- vi正则表达式
搜索命令:/正则表达式 替换命令::s/正则表达式/替换字符串/选项 :%s/str1/str2/g 该命令中:表示进入命令行模式,%表示对该文件所有行有效,s表示查找并替换,正则表达式str1表 ...
- SQL语句(三)分组函数和分组查询
目录 一.分组函数 特点 1. 各函数的简单使用 2. 搭配distinct的使用 3. COUNT 统计行数 4. 和分组函数一同查询的字段要求是group by后的字段 二.分组查询 1. 简单应 ...
- 基于CAS实现SSO单点登录
1. 概述 1.1. 什么是SSO? 单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要 登录一 ...