数组的概念:有序的集合, 索引从0开始 , 一定是连续不间断的 . 数组中的元素类型可以使任意数据类型,是一个 Array。
伪数组概念:具有 length 属性,其它属性(索引)为非负整数,但是不具备数组所具有的方法,是一个 Object。
举例:var fakeArray = { "0": "one", "1": "two", "2": "three", length: 3 };
常见的伪数组 :函数的参数arguments , dom元素[Nodelist HTMLCollection] , jQuery对象[$('div')];
判断是否为伪数组 :
- 数据 instanceof Array
- Object.prototype.toString.call( 数据 ) === '[object Array]'
将伪数组转为数组 :
- 声明一个空数组,通过遍历伪数组将它们添加到一个数组中。
var aLi = document.querySelectorAll('li'); var arr = []; for (var i = 0; i < aLi.length; i++) { arr[arr.length] = aLi[i] }
2. 使用es6 新方法 Array.from(PseudoArray);
var pseudoArray = { '0':‘zero’, '1':‘one’, '2':‘two’, length:3 }; var arr = Array.from(pseudoArray); console.log(arr) // ['zero,'one','two']