將類數組轉化成數組

首先說說什麼是類數組:數組

1.擁有length屬性,其它屬性(索引)爲非負整數(對象中的索引會被當作字符串來處理,這裏你能夠當作是個非負整數串來理解),app

2.不具備數組所具備的方法,spa

好比:argumentsprototype

將相似數組的對象轉化成真正的數組的方法:code

方法一:對象

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

<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 = [];ip

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>
相關文章
相關標籤/搜索