当前位置: 首页 > news >正文

数组与伪数组的区别

大家都知道,在js中使用 document.querySelectorAll(选择器)获取到的为该选择器能选择到的所有元素组成的伪数组,所谓伪数组,就是外表和数组一样,能够使用索引遍历,但本质是对象

数组与伪数组之间的区别:

        数组是继承自Array的方法,因此可以使用push(),sort(),pop(),shift()等方法;

        而伪数组没有继承自Array的方法,因此没有数组的部分方法和属性。

伪数组拥有的数组属性有:

        length:表示伪数组的长度

伪数组拥有的数组属性:

        索引访问:可以通过索引来访问为数组中的元素;

        toString():将伪数组转换为字符串,并返回该字符串;

        join():将伪数组中所有元素组合成一个字符串,并使用指定的分隔符来分割各个元素;

        slice():从伪数组中提取一个子数组,并返回一个新数组,不会对原数组造成破坏。

        forEach():遍历伪数组中的元素。注意:这个方法在我做蓝桥杯web应用开发题的过程中不可使用,报错信息为:arr.forEach()不是一个方法。但是使用for循环是没有问题的,因此遍历伪数组我更推荐使用for循环。

也还有其他一些方法,就不一一概述了。接下来提一下没有的方法,没有的方法大多是对数组中元素个数进行操作的属性,比如:push()、shift()、pop()等,当然也有一些其他方法,比如map()。因此在使用伪数组的过程中要格外注意不要随意使用数组的方法,以免出现错误。

js中获取伪数组的方法:

        1.DOM操作返回的结果:比如使用document.getElementByClassName()、document.querySelectorAll()等,得到的结果是符合类名或选择器的所有元素组成的伪数组。

        2.获取节点的所有子元素:node.children——该方法获取到的是节点node中所有子元素组成的伪数组。

js中伪数组如何转化为数组:

let arr=Array.from(伪数组)  //将伪数组转换为数组,并使用变量arr接收;

let arr=[...伪数组]    //使用展开运算符将伪数组转成数组,并用arr接收;

最后再提一下我在题目中遇到的问题:

        我使用let one = document.querySelectoryAll('select option')获取到select标签下所有option元素,记作变量one;

        使用let two = document.querySelectory('select').children获取到select标签下所有子节点元素记作变量two;

        大家都知道select中子元素只有option,因此使用这两种方法获取到的伪数组都是只包含select中的option。

        但是当select中option数量发生改变时,就体现出这两种方法的区别了。直接说结果——使用第一种方法获取到的变量one不会随着option数量变化发生变化。而第二种方法会随着option的数量变化而发生变化,因此更推荐使用第二种方法获取子元素节点组成的伪数组。具体如下图:

图一:子元素改变前

图二:子元素改变后

http://www.lryc.cn/news/336304.html

相关文章:

  • Java集合List
  • elasticsearch基础命令
  • Capture One 23 Enterprise for Mac中文版 全面的图像处理工具
  • Qt案例 通过调用Setupapi.h库实现对设备管理器中设备默认驱动的备份
  • 如何理解JVM
  • 第十四讲:C语言字符函数和字符串函数
  • 华为海思2024春招数字芯片岗机试题(共9套)
  • 分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测
  • 与机器对话:ChatGPT 和 AI 语言模型的奇妙故事
  • 概率论基础——拉格朗日乘数法
  • [xboard]real6410-6.2 移植kernel网络驱动
  • Quarkus初探
  • 90天玩转Python-02-基础知识篇:初识Python与PyCharm
  • List操作的一些常见问题
  • 如何使用Java和RabbitMQ实现延迟队列?
  • AI论文速读 | TF-LLM:基于大语言模型可解释性的交通预测
  • 智慧矿山视频智能监控与安全监管方案
  • 2024春算法训练4——函数与递归题解
  • 【C++】C++知识点复习
  • SpringBoot+Vue,轻松实现网页版人脸登录与精准识别
  • 深入浅出 -- 系统架构之垂直架构
  • 深入浅出 -- 系统架构之微服务架构选型参考图
  • Java 使用 ant.jar 执行 SQL 脚本文件
  • 【随笔】Git 高级篇 -- 快速定位分支 ^|~(二十三)
  • git环境切换
  • hyperf websocket
  • 用Echarts词云数据可视化热词表白​​
  • VUE 实现路由的基本原理
  • Android 11 添加系统属性
  • docker 创建容器过程