1. 伪数组的特点:

* Object对象
* length属性
* 数值下标属性
* 没有数组特别的方法: forEach(), push(), pop(), splice()
// 自定义一个伪数组
<script><script>var weiArr = {}weiArr.length = 0weiArr[0] = "zjw"weiArr.length = 1weiArr[1] = "after"weiArr.length = 2for (var i = 0; i < weiArr.length; i++) {var obj = weiArr[i]console.log(i, obj)}//伪数组是一个 Object,而真实的数组是一个 Arrayconsole.log(weiArr instanceof Array )  //falseconsole.log(weiArr instanceof Object ) //trueconsole.log(weiArr.forEach,weiArr.push) //undefined undefined</script></script>

2.判断一个对象是否属于“伪数组”

2.1用Array.isArray

Array.isArray(weiArray) === false;
Array.isArray(arr) === true;

2.2用instanof

 console.log(weiArrayinstanceof Array)//falseconsole.log(arr instanceof Array)//true

3.常见的伪数组

1.jQuery 对象(比如 $(“div”) )
2.函数内部的 arguments
3.DOM 对象列表(比如通过 document.getElementsByTags ,document.childNodes返回的NodeList对象)

4.伪数组存在的意义

伪数组存在的意义,是可以让普通的对象也能正常使用数组的很多方法(push和forEach等)

  <script>function fun(x,y){// arguments.push(3)  Uncaught TypeError: arguments.push is not a functionArray.prototype.push.call(arguments,3)console.log(arguments)}fun(1,2)</script>

5.将伪数组转换为数组

可以使用Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象

<script>function fun(x,y){const newarguments= Array.prototype.slice.call(arguments)console.log(newarguments)console.log(newarguments instanceof Array)//trueconsole.log(Array.isArray(newarguments))//true}fun(1,2)</script>

js中伪数组(也叫类数组)相关推荐

  1. js 伪数组(类数组)与数组的区别

    js 数组和类数组的区别 类数组定义 1)拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理):       2)不具有数组所具有的方法: javascript中常见的 ...

  2. js中的字符串方法与数组方法总结

    js中的字符串方法与数组方法总结 1.字符串方法 2.数组方法

  3. JS中根据指定值删除数组中的元素

    JS中根据指定值删除数组中的元素 原生js 如果想删除数组,有一个函数 splice() ~~ 删除元素,并向数组添加新元素. splice是根据数组内的下标 也就是索引来 删除元素的比如: var ...

  4. JS中定义一个二维数组

    JS中定义一个二维数组 方法一 var _TheArray = [["0-1","0-2"],["1-1","1-2"] ...

  5. 数组与类数组以及在类数组对象使用数组的方法

    如何在类数组中使用数组的方法? 这里记点笔记,仅供学习参考. 文章目录 判定数组 1. Array.isArray( ) 2. instanceof 操作符 3. 检测类属性 数组 类数组 类数组对象 ...

  6. 【译】JS基础算法脚本:类数组(arguments)去重

    需求 给出一个类数组,删除要求的重复数据,返回新数组 destroyer([1, 2, 3, 1, 2, 3], 2, 3) should return [1, 1] destroyer([2, 3, ...

  7. js数组获取index_通过事例重温一下 JS 中 常见的15 种数组操作(备忘清单),收藏...

    数组是 JS 中广泛使用的数据结构.数组对象提供了大量有用的方法,如array. forEach().array.map()等来操作数组. 在实战中,我经常对数组可能的操作和相应采用哪个更好的方法不知 ...

  8. js 数组和类数组的区别

    类数组定义 1)拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理):       2)不具有数组所具有的方法: javascript中常见的类数组有 argument ...

  9. JS 中判断一个对象是否为数组对象?

    在面向对象中 判断一个对象中 判断一个对象是否为数组 1 可以查找它的原型 (__proto__) 是否为数组对象的原型对象 var arr1 = [1,2,3];console.log(arr1._ ...

  10. js中不会影响原数组的方法

    1:concat() 该方法可以连接两个或多个数组,并将新的数组返回.不会对原数组产生影响 2:join() 该方法可以将数组转换为一个字符串 该方法不会对原数组产生影响,而是将转换后的字符串作为结果 ...

最新文章

  1. AaronYang WCF教程目录
  2. 华为鸿蒙系统发展时间2021年,耗时八年打造国产系统,华为鸿蒙OS质疑声不断,它才是真正未来...
  3. read一个收到RST的socket会返回0?
  4. python如何打开图片_python如何处理图片
  5. 微博股市直播实时监控提醒
  6. wps表格的宏被禁用问题
  7. win10怎么获得计算机权限,Win10如何获取TrustedInstaller超级权限?
  8. Win10家庭中文版如何添加本地用户
  9. NBUT 1451 Elise (暴力+并查集)
  10. HBuilder js,css压缩,增强代码的安全性
  11. Android 自定义底部上拉控件的实现
  12. Dubbo源码分析:全集整理
  13. 华为云计算之rainbow迁移实验
  14. 如何处理在WINDOWS VISTA上安装VS2008时遇到要求安装WINDOWS XP SP2的错误和QQ对战平台安装后不能登录的问题
  15. android 5.0小米1刷机包,小米1刷机包 V5稳定版V1.2 流畅纯净 精简省电 默认开启未知来源 Android4.1.2...
  16. ps命令,top命令,pstree命令,缓存和缓冲的区别
  17. 电控无碳小车需要单片机吗_智能避障无碳小车-精选文档
  18. 如何维护网站?公司网站怎么维护?
  19. RationalDMIS Baces3D 关节臂测量使用说明
  20. 2022国赛c题省一论文latex

热门文章

  1. 详解字符串处理函数(复制、连接、比较、字符串长度函数)
  2. 一名典型985毕业生的政治经济学
  3. 线性代数_The span of those tow vector(两个向量的张成空间)
  4. 一个人的旅行(Dijkstra算法)
  5. 图像隐写分析-Markov特征编程实现
  6. HP XP7 GAD双活实现的理解
  7. 从头走前端-百度前端技术学院(1)
  8. 基于ffmpeg的音频转码
  9. 用系统之家重装后就成这样了
  10. python2的print和python3的print()