偽數(shù)組?一聽到這個(gè)詞懵了,知道js中有數(shù)組,竟然還有偽數(shù)組?
在面試過(guò)程中,面試官問(wèn)的有些東西我們不是不會(huì),而是被專業(yè)術(shù)語(yǔ)嚇懵了
偽數(shù)組:就是無(wú)法使用數(shù)組的方法和api,但任然可以使用便利數(shù)組的方式遍歷他們。
概念一出,好像有點(diǎn)明白了,但是什么才是真正的偽數(shù)組呢?其實(shí)偽數(shù)組我們經(jīng)常見,如下:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script type="text/javascript">
var li=document.getElementsByTagName("li");
console.log(li);
</script>
2020-08-10_231830.png
我們想要查找所有的li,結(jié)果給我們返回了一個(gè)數(shù)組格式的的列表,和數(shù)組非常像,但它并不是數(shù)組,數(shù)組中的API如 slice splice等它不能用,但它是可以被遍歷的,它叫做NodeList(節(jié)點(diǎn)列表),是一個(gè)類數(shù)組對(duì)象。這種就是偽數(shù)組,當(dāng)然偽數(shù)組還有函數(shù)的arguments參數(shù)
那我們?nèi)绾伟岩粋€(gè)偽數(shù)組轉(zhuǎn)換為一個(gè)真正的數(shù)組呢?可以使用
Array.prototype.slice.call()進(jìn)行轉(zhuǎn)換,接下來(lái)我們看一下轉(zhuǎn)換過(guò)程:
2020-08-10_233140.png