定义
类数组对象
只包含使用从零开始,且自然递增的整数做键名,并且定义了length表示元素个数的对象,我们就认为它是类数组对象! 一般我们常用到的类数组对象如:arguments,获取的元素集合
如:let o = {0:23,1:23,2:32,length:3};
数组
一组有序的数据集合,索引为从0开始递增的正整数。 如:
let ary = [2,2,4,5];
- 根据它们的定义,我们可以使用对象来模拟数组,只要我们定义的对象的每个元素的键名都使用数字(整数) 并且让其保持递增,且动态的定义一个length属性来表示元素个数,那么从效果上来说,这个对象就跟数组相同了。
比较
区别
- 类数组对象不具有数组的方法;
- 类数组对象是对象不是Array,用isArray判断会返回false;
相同
- 类数组对象跟数组都可以通过索引去访问;
- 都拥有length属性;
转换
类数组对象转数组
Array.prototype.slice.call(arguments)
Array.prototype.splice.call(arguments,0)
Array.from(arguments)
Array.prototype.concat.apply([],arguments)
数组转对象
{...arr}
Object.assign({}, arr)