• 类数组以及将类数组转化为数组的方法


    今天在学习的时候碰到一个新概念,类数组,我用document.querySelectorAll 获取元素的时候,以为返回的是数组,想用splice方法操作这个数组,发现不行,查了一下资料发现这个方法返回的不是数组,叫类数组。总结了一下,arguments函数

    document.querySelectorAll、 document.getElementByTagName、 document.getElementsByName、 document.getElementsByClassName //返回的都是类数组,不能使用数组的一些方法,但是因为有interator接口,所以可遍历循环,那么怎么将一个类数组转换成数组呢?

    一、遍历类数组,依次将元素放入一个空数组

    1 let  ips = document.querySelectorAll('input')
    2 
    3     let divarr = []
    4 
    5     for(let i = 0; i <ips.length; i++){
    6         divarr.push(ips[i])
    7     }

    //也可以用这种方法
    for(let item of ips){
            divarr.push(item)
        }

    二、用扩展运算符或者Array.from()方法转换

    扩展运算符和Array.from()方法是ES6新增的,可将类数组直接转化为数组

     

    1 let  ips = document.querySelectorAll('input')
    2 
    3     let divarr = []
    4 
    5     divarr = [...ips] 
    6 7     divarr = Array.from(ips)

    三、利用apply展开

     1 let ips = document.querySelectorAll('input') 2 3

    let divarr = [].concat.apply([],ips); 

    四、Array.prototype.slice.call() 

    这种方法是借用了数组原型中的slice方法,返回一个数组。slice方法的内部实现:
    1 Array.prototype.slice = function(start,end){
    2   var result = new Array();  
    3   start = start || 0;  
    4   end = end || this.length; //使用call之后this指向了类数组对象
    5   for(var i = start; i < end; i++){  
    6        result.push(this[i]);  
    7   }  
    8   return result;  
    9 }
    var div1 = Array.prototype.slice.call(document.querySelectorAll('div'), 0);
    var div2 = Array.prototype.slice.call(document.querySelectorAll('div'));
    不积跬步无以至千里
  • 相关阅读:
    新版Unity的一些小玩意儿
    Three.js踩坑笔记
    Unity 接入腾讯云COS对象存储
    通过贝塞尔曲线编辑曲线
    利用ZXing.Net生成和识别二维码
    开源免费的安卓投屏工具-Scrcpy
    Unity Reflection Probe使用入门
    Unity VFX踩坑
    windows上通过自定义后缀文件启动Unity应用
    应用于Oculus Quest的VR头显应用
  • 原文地址:https://www.cnblogs.com/lyt0207/p/11812291.html
Copyright © 2020-2023  润新知