• 将类数组转化成数组


    首先说说什么是类数组:

    1.拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解),

    2.不具有数组所具有的方法,

    比如:arguments

    将类似数组的对象转化成真正的数组的方法:

    方法一:

    var arr = Array.prototype.slice.apply(arguments);  或  var arr = Array.prototype.slice.call(arguments);

    <script>
        var aa = function(a, b, c, d){
            
            var arr1 = Array.prototype.slice.apply(arguments);
            var arr2 = Array.prototype.slice.apply(arguments);
            console.log(arguments instanceof Array);        //false
            console.log(arr1);                              //[1, 2, 3, [1, 2, 3]]            
            console.log(arr1 instanceof Array);             //true
            console.log(arr2);                              //[1, 2, 3, [1, 2, 3]]    
            console.log(arr2 instanceof Array);             //true
        };
        aa(1,2,3,[1,2,3]);
    </script>

    方法二:

    var kong = [];

    var arr = Array.prototype.concat.apply(kong, arguments);

    注意这种方式的特点和其他的区别

    <script>
        var aa = function(a, b, c, d){
            var kong = [];
            var arr1 = Array.prototype.concat.apply(kong, arguments);
            console.log(arguments instanceof Array);            //false
            console.log(arr1);                                  //[1, 2, 3, 1, 2, 3]
            console.log(arr1 instanceof Array);                 //true
        };
        aa(1,2,3,[1,2,3]);
    </script>

    方法三:

    var kong = [];

    var arr = Array.apply(kong, arguments);

    <script>
        var aa = function(a, b, c, d){
            var kong = [];
            var arr = Array.apply(kong, arguments);
            console.log(arguments instanceof Array);     //false
            console.log(arr);                            //[1, 2, 3, [1, 2, 3]]
            console.log(arr instanceof Array);           //true
        };
        aa(1,2,3,[1,2,3]);
    </script>

    方法四:

    比较好理解的便是for循环了。

    <script>
        var aa = function(a, b, c, d){
            var arr = [],
                i = 0,
                len = arguments.length;
            for(; i < len; i++){
                arr[i] = arguments[i];
            }
            console.log(arguments instanceof Array);     //false
            console.log(arr);                            //[1, 2, 3, [1, 2, 3]]
            console.log(arr instanceof Array);           //true
        };
        aa(1,2,3,[1,2,3]);
    </script>

    方法五:

    var arr = Array.from(arguments);  这是ES6新增加的方法

    <script>
        var aa = function(a, b, c, d){
            var arr = Array.from(arguments);
            console.log(arguments instanceof Array);     //false
            console.log(arr);                            //[1, 2, 3, [1, 2, 3]]
            console.log(arr instanceof Array);           //true
        };
        aa(1,2,3,[1,2,3]);
    </script>

    方法六:

    var arr = [...arguments];  这也是ES6新增的扩展运算符

    <script>
        var aa = function(a, b, c, d){
            var arr = [...arguments];
            console.log(arguments instanceof Array);     //false
            console.log(arr);                            //[1, 2, 3, [1, 2, 3]]
            console.log(arr instanceof Array);           //true
        };
        aa(1,2,3,[1,2,3]);
    </script>
  • 相关阅读:
    企业IT管理说:全自动就一定是最好的吗?
    银行爱“IOE”爱得有多深
    谷歌数据中心
    屏蔽爬虫
    ,net运行框架
    视频格式
    HTTP协议
    IE的体系和webrowser
    jsp请求由servlet响应的方式
    Web请求响应简单整理
  • 原文地址:https://www.cnblogs.com/tqt--0812/p/6880302.html
Copyright © 2020-2023  润新知