zoukankan      html  css  js  c++  java
  • 伪数组转换为真正的数组

    法1:使用es6中Array.from
    var arrList=document.getElementByClassName("active");
    var arr=Array.from(arrList);       //将伪数组转换为真正的数组
    
    var args = Array.from(arguments);   //将伪数组转换为真正的数组
    
    let arrayLike = {
      '0': 'a',
      '1': 'b',
      '2': 'c',
      length: 3
    };
    var arLs = Array.from(arrayLike);//将伪数组转换为真正的数组
    console.log(Object.prototype.toString.call(arLs)==='[object Array]');//true
    
    任何Iterator接口的对象,都可以用扩展运算符转为真正的数组。
    var nodeList = document.querySelectorAll('div');
    var array = [...nodeList];
    
    
    法2:通过call改变this指针
    var newArr=Array.prototype.slice.call(oP.childNodes,0);
    //Array.prototype.slice复制到了oP.childNodes中,所以oP.childNodes可以使用slice的所有方法、属性,
    //又因为slice(start,end)返回的是一个数组,结束位置不包括end,所以oP.childNodes返回的也是一个位置
    //Array.prototype.slice.call(oP.childNodes,0):参数2是slice的截取的开始位置,省略了结束位置,即到数组的末尾
    
    
    法3:使用for循环遍历
    var newArr=[];
    for(var i=0;i<oP.childNodes.length;i++){
    newArr.push(oP.childNodes[i]);
    }
    console.log(newArr);  
    
    
    
    兼容所有浏览器的写法
    
    function convertToArray(nodes){
    var arr=[];
    try{
    arr=Array.prototype.slice.call(nodes,0);   //针对非IE
    }catch(ex){
    for(var i=0;i<nodes.length;i++){
    arr.push(nodes[i]);
    }
    }
    return arr;
    }
    
    
    
    
  • 相关阅读:
    [转]sql语句优化原则
    [Effective C++]构造/析构/赋值运算
    [Effective C++]定制new和delete
    [Effective C++]让自己习惯C++
    [C++ primer]联合:节省空间的类
    [C++ primer]类成员指针
    [C++ primer]运行时类型识别(RTTI)
    [APUE]fork后子进程的运行情况
    [C++ primer]优化内存分配
    [C++ primer]虚函数和纯虚函数
  • 原文地址:https://www.cnblogs.com/sakura-sakura/p/6678248.html
Copyright © 2011-2022 走看看