浅谈类数组转数组的方法

1.什么是类数组对象?
JS中的定义:它们看起来很像数组,只是具有部分和数组相同特性:

  • 拥有length属性
  • 元素保存在对象中,可以通过索引访问但是不能调用数组的其他方法

2.为什么要将类数组转为数组?
由于类数组不具有数组所具有的操作数组的方法,类数组转换为数组之后就能调用如shift(),unshift(),splice(),slice(),reverse(),sort()等这些强大的方法,方便快捷。

3.类数组对象转为数组的方法:

  1. Array.prototype.slice.call(类数组对象)
    数组的slice()方法可以从已有数组中返回一个新数组,它可以接受两个参数arr.slice(start,end),第一个参数star规定从何处开始选取,第二个参数end表示从何处选取结束,如果不传参将返回原数组的一个复制数组,但该方法不会修改原数组,而是返回截取的新数组,根据这个就可以将类数组转化成数组对象
    举例:
var ArrayLike={
            '0':'hello',
            '1':'world',
            '2':'ok',
            '3':12,
            length:4,
        }
var result=Array.prototype.slice.call(ArrayLike); 	
console.log(result)

结果:
在这里插入图片描述

2.Array.from(类数组对象)
举例:

var ArrayLike={
            '0':'hello',
            '1':'world',
            '2':'ok',
            '3':12,
            length:4,
        }
var result=Array.from(ArrayLike);
console.log(result)

结果:
在这里插入图片描述
3.扩展运算符
(…类数组对象)

举例:

var ArrayLike={
            '0':'hello',
            '1':'world',
            '2':'ok',
            '3':12,
            length:4,
        }
var result=[...ArrayLike]
console.log(result)     

此时会报错:
Uncaught TypeError: ArrayLike is not iterable

为类数组部署 Iterator 接口

var ArrayLike={
            '0':'hello',
            '1':'world',
            '2':'ok',
            '3':12,
            length:4,
            [Symbol.iterator]: Array.prototype[Symbol.iterator]
        }
var result=[...ArrayLike]
console.log(result)     

结果:
Array(4) [ "hello", "world", "ok", 12 ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>