将类数组转化成数组

首先说说什么是类数组:

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>
时间: 2024-10-23 20:04:56

将类数组转化成数组的相关文章

求平均数-----类数组转换成数组

求平均数的代码function avgFn() { 首先把arguments转化为数组 var ary = []; for (var i = 0; i < arguments.length; i++) { ary.push(arguments[i]); ary[ary.length] = arguments[i]; } 数组排序 ary.sort(function (a, b) { return a - b; }); 掐头去尾 ary.unshift(); ary.pop(); 求和求平均值,小

laravel 将数组转化成字符串 再把字符串转化成数组

这是在给阮少翔改代码的时候用的方法, 开始的数据用explored转化成数组不是想要的结果, 我就自己写了一个方法把有用的信息提取出来拼接成一个字符串, 再用explored将字符串转化成数组.   方法有点笨, 但是最后是解决了阮少翔的问题 $re1 = DB::table('admin_user') ->join('admin_role_user','admin_user.id','=','admin_role_user.user_id') ->select('admin_role_use

集合类转化成数组

使用比较多的时ArrayList转化成数组,例如: List<String> strList = new ArrayList<String>(); strList.add("aaa"); strList.add("bbb"); strList.add("ccc"); Object[] strArr = strList.toArray(); 调用toArray方法返回的时Object类型的数组,而且不能进行类型转化, Str

yii2得到的数据对象转化成数组

yii2得到的数据对象转化成数组需要用到asArray().1.Customer::find(['id' => $id])->asArray()->one();2.$model = Customer::findModel($id); $model->attributes;  

slice()把类数组转成数组和复制一个数组

function a(){ console.log(arguments.length); var c = [].slice.call(arguments);//类数组转成数组 c.push(5); console.log(c); console.log(arguments); } a(1,2,3) var a = [1,2,3], b = a.slice(0); a.push(5); console.log(a); console.log(b);

将一维数组转化成二维数组

<nz-table #colSpanTable [nzData]="temp" nzBordered> <tbody> <ng-container *ngFor="let row of temp;let i = index"> <tr> <td *ngFor="let title of row">{{title.AreaCodesName}}</td> </tr>

Educational Codeforces Round 80 (Rated for Div. 2)【A,B,C,D】C题DP{GG了} D题【数组转化成二进制形式判断+二分】

A题直接暴力水过 1 #include<bits/stdc++.h> 2 3 using namespace std; 4 #define int long long 5 #define N 6666666 6 int arr[N]; 7 8 signed main(){ 9 int _;cin>>_; 10 while(_--){ 11 int n,m; 12 cin>>n>>m; 13 if(n>=m){ 14 cout<<"

使用apply的方法将伪数组转化为数组

js中好多DOM方法都是针对数组的,可是有时候我们会取得一些伪数组,此时要想操作伪数组,那就必须把伪数组转化为数组,以下通过apply(  )的方法demo一个实例,以供大家参考(以下是部分代码): </head> <body> <span>span</span> <span> span</span> <p>ppp</p> <span>span</span> <span> s

Array.from()类数组转化为数组的用法

类数组对象转化为数组 let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }; let arr = Array.from(arrayLike) arr.forEach(el=>console.log(el)) 输出结果:[a,b,c],需要注意的是,length不能少 原文地址:https://www.cnblogs.com/leileilei/p/10985990.html