3 回答

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
ECMAScript規(guī)范指出:NodeLists是宿主對象,Array.prototype.slice不能保證在宿主對象上使用方法可以正常工作。
slice函數(shù)是否可以成功應(yīng)用于宿主對象取決于實(shí)現(xiàn)。
我建議您做一個(gè)簡單的函數(shù)來遍歷NodeList并將每個(gè)現(xiàn)有元素添加到數(shù)組中:
function toArray(obj) {
var array = [];
// iterate backwards ensuring that length is an UInt32
for (var i = obj.length >>> 0; i--;) {
array[i] = obj[i];
}
return array;
}
更新:
正如其他答案所建議的那樣,您現(xiàn)在可以在現(xiàn)代環(huán)境中使用傳播語法或Array.from方法:
const array = [ ...nodeList ] // or Array.from(nodeList)
但是考慮一下,我想將NodeList轉(zhuǎn)換為Array的最常見用例是對其進(jìn)行迭代,現(xiàn)在該NodeList.prototype對象具有本forEach機(jī)方法,因此,如果您在現(xiàn)代環(huán)境中,則可以直接使用它,也可以使用滿溢的
添加回答
舉報(bào)