zoukankan      html  css  js  c++  java
  • 类数组以及将类数组转化为数组的方法

    今天在学习的时候碰到一个新概念,类数组,我用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'));
    不积跬步无以至千里
  • 相关阅读:
    数组指针:a pointer to an array,即指向数组的指针
    爬取人人网新鲜事python版本
    python的专用类方法
    北邮校园网管登陆python脚本
    北邮人论坛python模拟登录程序
    结对项目四则运算“软件”升级版
    了解大数据的特点、来源与数据呈现方式
    第一次作业:准备
    第二次作业:分布式版本控制系统Git的安装与使用
    第三次作业 四则运算
  • 原文地址:https://www.cnblogs.com/lyt0207/p/11812291.html
Copyright © 2011-2022 走看看