偽數組轉為真數組


偽數組轉為真數組

對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>

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM