首先我们得区分NodeList是不是数组?
可以用Array.isArray(NodeList)判断是不是数组
例子:
let imgs = document.querySelectorAll('.layer img');
console.log(imgs);//NodeList(15) [ img, img, img, img, img, img, img, img, img, img, … ]
console.log(Array.isArray(imgs));//false
我们可以看到结果是false,NodeList称为伪数组,因为它是DOM操作得到的元素集合,但又具有数组的部分属性,如length和索引。
接下来分享一下如何将NodeList转换为Arrays数组:
第一种是我最喜欢的方法也是最简单的方法,利用...扩展运算符
imgs = [...imgs];
console.log(imgs);//Array(15) [ img, img, img, img, img, img, img, img, img, img, … ]
console.log(Array.isArray(imgs));//true
第二种是利用Array.from()
let imgArray = Array.from(document.querySelectorAll('.layer img'));
console.log(imgArray);//Array(15) [ img, img, img, img, img, img, img, img, img, img, … ]
第三种就是遍历NodeList,赋值给数组
let imgArrayB = [];
for(var i =0;i<imgs.length;i++){
imgArrayB.push(imgs[i]);
}
console.log(imgArrayB);//Array(15) [ img, img, img, img, img, img, img, img, img, img, … ]