伪数组对象本质:必须有length属性。
一、DOM操做返回的NodeList集合。下面的nodeList就是一个伪数组对象。
var nodeList = document.querySelectorAll('li');
二、函数内部的arguments对象。node
方法一:扩展运算符。
使用扩展运算符的前提是:使用者必须是已经部署了Iterator接口。例如,字符串,Set结构是都具备Iterator接口的。(扩展运算符背后调用的是遍历器接口)
从下图能够看出扩展运算符真的把伪数组对象转换成了真正的数组。es6
方法二:Array.from()
能够将类数组对象和可遍历对象都转换为真正的数组,任何有length属性的对象,均可以经过Array.from()方法转为数组。
下图含有es6和es5的转换数组的方法。
注意:
Array.from()还有一个用途:
将字符串转为数组,而后返回字符串的长度。由于它能正确的处理各类Unicode字符,能够避免JavaScript将大于uFFFF的Unicode字符算做两个字符的bug。数组
用途:将一组值转换为数组。
优势:弥补了Array()的不足。
例子:
从下面例子能够看出:
Array()若是只有一个参数的时候,这个参数其实是指定数组的长度。和多参的时候表现不一致。
Array.of()老是返回参数值组成的数组。函数
用途:将指定位置的成员复制到其余位置(会覆盖全部的成员),并返回当前数组。
Array.prototype.copyWithin(a,b,c);其中参数a是必选的。参数b,c是可选的,能够为负数。测试
find():找出第一个符合条件的成员。
findIndex():找出第一个符合条件成员的位置。
优势:这两个方法均可以发现NaN。
find,findIndex实例es5
有关NaN的实例spa
做用:用来初始化空数组比较方便。他会把数组中已有的元素会被所有抹去。
fill(a,b,c)
a:填充的数据。
b:指定填充的起始位置。
c:指定填充的结束位置。prototype
entries():对键值对的遍历。
keys():对键名的遍历。
values():对键值的遍历。
这三个方法都能返回一个遍历器对象。能够用for...of循环遍历。
keys的用法:code
entries的用法:对象
values的用法:
用途:表示某个数组是否包含给定的值。
[].includes(a)
a:测试数据。
b:起始位置,能够是负数。
优势:弥补了indexOf的两个缺点,(1)不够语义化.(2)indexof内部必须使用严格运算符(===)(3)indexOf不能识别NaN,可是include能够。
关于NaN的查找
查看某个元素是否存在
注意:不少数组的方法,对空位的处理规则都不同,因此最好避免空位的出现。