偽數(shù)組轉(zhuǎn)為真數(shù)組
對(duì)DOM元素進(jìn)行map、forEach操作時(shí)候需要進(jìn)行遍歷,偽數(shù)組遍歷會(huì)報(bào)錯(cuò):'elem.map is not a function',為了避免這個(gè)問(wèn)題,需要進(jìn)行轉(zhuǎn)換。
(1) ES5 轉(zhuǎn)為真數(shù)組
Array.prototype.slice.call(元素對(duì)象)
let elem1 = Array.prototype.slice.call(elem)
(2) ES6 轉(zhuǎn)為真數(shù)組
Array.from(元素對(duì)象)
let elem2 = Array.from(elem)
(3) 例子
<ul>
<li class="a" ></li>
<li class="a" ></li>
<li class="a" ></li>
<li class="a" ></li>
<li class="a" ></li>
</ul>
<script>
/* 獲取li元素*/
let elem = document.getElementsByClassName('a')
/* 這樣寫(xiě)是錯(cuò)誤的,因?yàn)槭莻螖?shù)組*/
elem.map((item,index,elem) => {
console.log(item +'---'+index + '----'+elem)
/*elem.map is not a function*/
})
// (1)es6 轉(zhuǎn)為真數(shù)組
let elem1 = Array.from(elem)
// (2)es5 轉(zhuǎn)為真數(shù)組
let elem2 = Array.prototype.slice.call(elem)
console.log(elem)
console.log(typeof elem)
console.log(elem1)
console.log(elem2)
elem1.map((item,index,elem1) => {
console.log(item +'---'+index + '----'+elem1)
})
elem2.map((item,index,elem2) => {
console.log(item +'---'+index + '----'+elem2)
})
</script>