定义:javascript
length
属性和数值下标属性。伪数组是一个Object
,而真实的数组是一个Array
arguments
HTMLCollection
():好比经过document.getElementsByTagName
获得的列表jquery
对象:好比$("div")
经过document.getElementsByTagName
获得的DOM对象列表是一个伪数组。html
<ul> <li>test1</li> <li>test2</li> <li>test3</li> <li>test4</li> </ul>
const lis = document.getElementsByTagName('li'); console.log(lis); // HTMLCollection(4) [li, li, li, li]
Object
,而真实的数组是一个Array
console.log(lis instanceof Array); // false console.log(lis instanceof Object); // true
length
属性和数值下标属性console.log(lis[1]); // <li>test2</li> console.log(lis.length); // 4
console.log(lis.forEach) //undefined lis.forEach((ele) => console.log(ele))
真实数组的forEach()
方法:java
const ll = [1,2,3]; ll.forEach((ele) => console.log(ele))
Array.prototype.slice.call(lis)
将伪数组转换为真数组// Array.prototype.slice.call(lis):将伪数组转换为真数组 const lis2 = Array.prototype.slice.call(lis); // 至关于 lis.slice() console.log(lis2 instanceof Array); //true console.log(lis2 instanceof Object); //true console.log(lis2[1]); // <li>test2</li> console.log(lis2.forEach); // ƒ forEach() { [native code] }
数组的slice()
截取数组中指定部分的元素, 生成一个新的数组 [1, 3, 5, 7, 9], slice(0, 3)
jquery
// slice2() Array.prototype.slice2 = function (start, end) { start = start || 0 end = start || this.length const arr = [] for (var i = start; i < end; i++) { arr.push(this[i]) } return arr }