JavaScript怎么让类数组使用上数组的方法?

  • 什么是类数组?
  • 类数组的组成
  • 类数组的定义
  • 数组丰富的内建方法有哪些?
  • 如何让类数组使用上数组丰富的内建方法?
    • 如果你想进一步的了解为什么可以这么做,其实可以想想filter是如何实现的。

什么是类数组?

  • JavaScript 常见的类数组:arguments
  • JavaScript 常见的类数组:获取Dom元素方法返回的结果(比如getElementsByTagName)

  • 类数组和数组的区别与联系
    数组用有丰富的内建方法供大家使用,而类数组是结构与数组十分相似(类数组相当于一个对象,key是数字,或者数字的字符串形式,并且拥有length属性)但是却没有数组那么丰富的内建方法,通常类数组可能还拥有一些别的属性。

类数组的组成

  • 类数组是一个对象

  • 类数组这个对象必须包含length属性

  • 类数组中key是以数字或者数字的字符串组成。

类数组的定义

    var arrLike = {0:"zhangsna",1:"lisi",2:"wangwu",3:"zhaoliu",4:"xiaoming",5:"xiaohong",length:6}console.log(arrLike)console.log("甚至可以像数组一样使用for循环")for (let i = 0;i<arrLike.length;i++){console.log(i+":",arrLike[i])}

数组丰富的内建方法有哪些?

  • 控制台打印输出看下

如何让类数组使用上数组丰富的内建方法?

  • 调出数组的方法
  • 运用call或者apply显示绑定this的指向

例如我想通过filter方法过滤出类数组中元素包含"i"这个字符的所有元素。
可以通过如下写法进行处理。

[].filter.call(arrLike,(item)=>{return item.includes("i")})

如果你想进一步的了解为什么可以这么做,其实可以想想filter是如何实现的。

    //myFilter[].__proto__.myfilter = function (callback) {let newArr = []for (let i = 0;i<this.length;i++){if (callback(this[i])){newArr.push(this[i])}}return newArr}for (let i = 0;i<arrLike.length;i++){console.log(i+":",arrLike[i])}console.log([].myfilter.call(arrLike, (item) => {return item.includes("i")}));

可以看出就是因为filter实现是通过this进行绑定的,哪个数组调用了这个filter,filter中的this就指向哪个数组。看到这里你脑海里是否有一个闭环?

JavaScript什么是类数组?相关推荐

  1. 深入理解JavaScript类数组

    起因 写这篇博客的起因,是我在知乎上回答一个问题时,说自己在学前端时把<JavaScript高级程序设计>看了好几遍. 于是在评论区中,出现了如下的对话: 天啦噜,这话说的,宝宝感觉到的, ...

  2. Javascript系列(九):类数组和数组

    在JavaScript中,类数组和数组是两个不同的概念,同时也是需要区分清楚的. 数组我们都了解,是JavaScript中的一个引用类型,那类数组是什么呢? 类数组和数组之间的区别 类数组拥有leng ...

  3. JavaScript类数组对象参考

    JavaScript和DOM中有很多类数组对象,它们有以下特点 1.有length属性 2.可以使用[]通过下标访问 3.部分类数组对象使用[]访问成员时不只可以使用下标,还可以使用id或name 4 ...

  4. JavaScript中的经典题型(类数组、CSS Sprites、事件委托、经典去重、原型链、闭包、深浅克隆、附带思路流程和源码)

    JavaScript中的经典题型 一.JavaScript中的经典题型 1..如何判断一个数组和类数组? 首先要明白什么是类数组. 类数组:类数组是一个普通对象,他的原型是Object.而真实的数组是 ...

  5. 重温 JavaScript 系列(2):数组去重、类数组转换数组

    在牛客上看到了一些汇总文章,这里总结一下JavaScript的数组去重解决方案: 假设测试数组: var arr = [1,1,2,2,3,'true','true',true,true,15,15, ...

  6. 【JavaScript】类数组详解

    [JavaScript]类数组详解 文章目录 [JavaScript]类数组详解 什么是类数组 类数组转换成数组 ES6 的方法转数组 callee属性 箭头函数没有arguments HTMLCol ...

  7. 【JavaScript】类数组对象

    欢迎学习交流!!! 持续更新中- 文章目录 类数组对象 arguments 类数组对象 理解:是JS中一种特殊的对象.本质上来说对象是满足了一定条件的数组,类数组的使用目的在于使得一个对象既有数组的特 ...

  8. 理解javascript类数组

    js数组,相比大家都很熟悉,因为走到哪都要用,但它有个"双胞胎弟弟" ,叫类数组(也叫伪数组),可能有的人了解,有的人不了解,今天我们来看一看. 什么是类数组 顾名思义,这玩意儿肯 ...

  9. JavaScript 的怪癖 8:“类数组对象”

    原文: JavaScript quirk 8 array-like objects 译者: Malcolm Yu 此文是 javascript 的 12 个怪癖(quirks) 系列的第八篇. Jav ...

最新文章

  1. 将信息写入TXT文本中(java)
  2. 启明云推SigmaStar SSD201 双网口开发板的双网口配置说明
  3. 每天一道LeetCode-----将链表中满足条件的节点移动到前面
  4. 5-2 决策树算法预测销量高低代码
  5. No injector for custom defined data type的解决办法
  6. Python | 程序以字符串长度打印单词
  7. Netty Associated -- ByteBuf
  8. 刷新页面,无论点击多少次让Element UI的Message消息提示弹出一个
  9. layui基础上的tree菜单动态渲染;
  10. linux笔记:linux帮助命令,man,help,whatis,apropos
  11. Java中继承方法的使用,以及使用方法的注意事项,继承方法重写的理解,白话文详解,简单易理解
  12. 基于Python的QQ空间相册中的所有照片下载器
  13. 精益数据分析 - 第15章 阶段1:移情
  14. 实用工具系列 - Pycharm安装下载使用
  15. 计算机专业硕士在职联考,计算机在职研究生可以选择一月联考的方式吗
  16. python基础教程: 利用turtle库绘制笑脸和哭脸的例子
  17. 13.14.4 文本文件到电子表格。python编程快速上手--让繁琐工作自动化 第2版。【美】阿尔·斯维加特 Al Sweigart 著 王海鹏 译 中国工信出版集团 人民邮电出版社
  18. eclipse语言切换
  19. RTX腾讯通基本功能
  20. 新形黑猩猩脸部辨识系统 帮助保护朕亨公益组织及时发现网络非法交易

热门文章

  1. 用python写一段相机控制程序
  2. 告别简陋,让Arduino开发变得高大上——MS VSCode体验
  3. IDEA部署tomcat原理小解
  4. Linux C语言 Zlib 实现解压zip文件
  5. CSS制作简单的横向菜单
  6. ElementUI修改表格背景颜色
  7. idea报8080端口被占用解决
  8. 一下子看懂校验码,CRC,海明码
  9. java 网页开发工具_制作网站常用的网页开发工具有哪些
  10. getAttribute