ECMAscript规范指出:NodeLists是宿主对象,
Array.prototype.slice不能保证在宿主对象上使用方法可以正常工作。
slice函数是否可以成功应用于主机对象取决于实现。
我建议您做一个简单的函数来遍历
NodeList并将每个现有元素添加到数组中:
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;}
更新:
正如其他答案所建议的那样,您现在可以在现代环境中使用传播语法或
Array.from方法:
const array = [ ...nodeList ] // or Array.from(nodeList)
但是考虑一下,我想将NodeList转换为Array的最常见用例是对其进行迭代,现在该
NodeList.prototype对象具有本
forEach机方法,因此,如果您在现代环境中,则可以直接使用它,也可以使用一个民意测验。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)