LastPoem / Notes

This is a note library
1 stars 0 forks source link

ES6_数组扩展 #6

Open LastPoem opened 5 years ago

LastPoem commented 5 years ago

1.扩展运算符

扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。 主要用于函数调用,将一个数组变为参数序列。可与正常的函数参数一起使用

替代函数的apply方法

由于扩展运算符可以展开数组,所以不再需要使用apply方法将数组转为函数参数了。

扩展运算符的应用

2.Array.from

Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。 对于还没有部署该方法的浏览器,可以用Array.prototype.slice方法替代。 Array.from还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。

3.Array.of

Array.of方法用于将一组值,转换为数组.这个方法的主要目的,是弥补数组构造函数Array()的不足。因为参数个数的不同,会导致Array()的行为有差异。

4.数组实例的copyWithin()

数组实例的copyWithin()方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。 它接受三个参数。

5.数组实例的find()和findIndex()

数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。

6.数组实例的fill()

使用定值填充一个数组。

7.数组实例的entries(),keys() 和 values()

ES6 提供三个新的方法——entries(),keys()和values()——用于遍历数组。它们都返回一个遍历器对象,可以用for...of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

8.数组实例的includes()

Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似。ES2016 引入了该方法。该方法的第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。

9.数组实例的 flat(),flatMap()

数组的成员有时还是数组,Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。

10.数组的空位

数组的空位指,数组的某一个位置没有任何值。比如,Array构造函数返回的数组都是空位。 空位不是undefined,一个位置的值等于undefined,依然是有值的。空位是没有任何值,in运算符可以说明这一点。

LastPoem commented 5 years ago

数组的map方法

映射,一一对应。

let arr = [23,43,65,76,59,97];
let arr2 = arr.map( item=>item>=60?'及格':'不及格');

数组的reduce方法

只返回一个值。

参数 | 描述

total | 必需。初始值, 或者计算结束后的返回值。 currentValue | 必需。当前元素 currentIndex | 可选。当前元素的索引 arr | 可选。当前元素所属的数组对象。

let arr = [23,43,65,76,59,97];
let result = arr.reduce(( tmp, item )=>{ 
 alert( "初始值"+tmp + "当前值"+ item );  return tmp+item;
 })

数组的filter方法

过滤

let arr = [23,43,65,76,59,97];
let arr2 = arr.filter(item=>
  item%2 == 0 ?true:false
)