The pseudo array into an array of real

The pseudo array into an array of real

2018.08.14 21:06:53 number of words to read 90 2321

Artificial arrays into an array of real

DOM elements to map, forEach operation time required to traverse, the dummy array traversal being given: 'elem.map is not a function', in order to avoid this problem, need to be converted.

(1) ES5 becomes true array

Array.prototype.slice.call (Object element)

let elem1 = Array.prototype.slice.call(elem) 
(2) ES6 becomes true array

Array.from (Object element)

let elem2 = Array.from(elem) 
(3) Examples
<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>

Guess you like

Origin www.cnblogs.com/li923/p/11724038.html