偽數組轉為真數組
對DOM元素進行map、forEach操作時候需要進行遍歷,偽數組遍歷會報錯:'elem.map is not a function',為了避免這個問題,需要進行轉換。
(1) ES5 轉為真數組
Array.prototype.slice.call(元素對象)
let elem1 = Array.prototype.slice.call(elem)
(2) ES6 轉為真數組
Array.from(元素對象)
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') /* 這樣寫是錯誤的,因為是偽數組*/ elem.map((item,index,elem) => { console.log(item +'---'+index + '----'+elem) /*elem.map is not a function*/ }) // (1)es6 轉為真數組 let elem1 = Array.from(elem) // (2)es5 轉為真數組 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>