es6初学——数组扩展

Array.from():

把类似数组的对象 和 可遍历的对象(set 和 map)转换成数组

类似数组的对象:

nodeList、arguments

这种有一个特征,有 length属性

可遍历的对象(set 和 map)因为有 遍历器接口(iterrator)所以才可以被转换(扩展运算符 只能转换这种的)

 

array.from 可以接受 第二个参数,像map一样对元素处理,将处理后的值放入返回的数组

没有array.from,用 Array.prototype.slice替代 =》 [].slice.call(obj)  (es5)

(你问返回的是不是原数组?它原本是  对象,后来 转换成数组……)

 

Array.of():

将一组转换成 数组

代替Array() 和 new Array()因为参数个数的不同,而行为有差异

没有参数,返回一个空数组:Array.of()               //[]

Array.of(1,2)       //[1,2]

Array.of(undefined)          //[undefined]

也可以[].slice.call()代替

 

copyWithin():

三个参数(第一个,从该位置开始替换数据;第二个和第三个,读取数据的起始和终止位置,都可以是负数,表示倒数)

第二个:默认0;第三个:默认数组长度

 

find() 和 findIndex()

find():

找出第一个 符合条件的数组成员,返回该成员,没有返回undefined

findIndex():

返回第一个 符合条件的数组成员的位置,没有返回 -1,

两个的参数 都是一个回调函数,并且都可以发现NaN

[NaN].findIndex(y=>Object.is(NaN, y))                        //0

[NaN].indexOf(NaN)                  //-1

(这个 也不涉及原数组什么)

 

fill():

填充,并且会抹去数组原有元素

//空数组的初始化  或者   返回原数组(对原数组的操作)

 

entries()(对键名遍历)

keys()(对键值遍历)

values()(对键值对遍历)

这三个 都要搭配 for……of,用于遍历数组,都返回一个遍历对象

for(let index of ['a', 'b'].keys()) {

     console.log(index)

}

 

includes()

与字符串的includes()类似

返回一个布尔值,表示某个数组是否包含给定的值

indexOf()不识别NaN

[1,2,NaN].includes(NaN)                        //true,因为它内部严格的===

[NaN].indexOf(NaN)                  //-1

与之类似的  还有Map和Set的has方法

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(es6初学——数组扩展)