数组和伪数组

数组和伪数组的区别

  1. 伪数组是一个对象(Object),而真实的数组是一个数组(Array)也是对象

  2. 拥有length属性,且必须是number类型,其它属性(索引)为字符串

  3. 不具有数组所具有的方法,forEach()等,不过有Object的方法

  4. 伪数组长度不可变,真数组长度可以变

  5. 可以通过for in遍历

  6. 伪数组没有Array.prototype,它只是一个对象

判断是否是数组

Array.isArray(arr) //true

arr instanceof Array //true

常见的伪数组

  1. 参数数组:arguments
  2. DOM对象列表HTMLCollection():比如通document.getElementsByTagName得到的列表
  3. jquery对象:比如$(“div”)

伪数组存在的意义

让一些对象也可以使用数组方法,可以通过call() bind() apply()方法实现

  • 注意,方法的返回值类型不会改变,返回数组的还是会返回数组

伪数组转换为真数组

  1. 使用ES6中的Array.from方法

  2. 使用扩展运算符,也是ES6的语法

  3. 使用Array.prototype.slice.call();

    arr = Array.prototype.slice.call(fakeArray)

  4. 使用[].slice.call()

    var arr = [].slice.call(fakeArray)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容