理解类数组对象与数组的区别

624 阅读1分钟

定义

类数组对象

只包含使用从零开始,且自然递增的整数做键名,并且定义了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)