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

伪数组和真数组

文章目录

  • 伪数组
  • 伪数组和真数组的区别
  • 将伪数组转换为真数组的方法
    • 法一:Array.prototype.slice.call(数据)
    • 法二:使用ES6的Array.from 方法

伪数组

1.拥有length属性,其他属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里可 当做是非负整数串来理解)
2、不具有数组所具有的push,pop等方法。

所以我们大概可以这样分辨伪数组:
1、伪数组是一个对象。
2、这个对象必须要有length属性。且必须是number类型。
3、如果这个对象的length不为0,那么必须要有按照下标存储的数据。
4、伪数组不可以使用数组中的方法(.forEach)。
5、但是伪数组的长度不可变。真数组的长度是动态可变的。

// 是真数组
var obj = {};
var obj = { length: 3 };
 
// 是伪数组
var obj4 = { 0: '12', length: 1 };
var obj5 = { 99: 'abc', length: 100 }

伪数组可以理解为类似数组的一个集合 常见的有两个,一个是arguments,一个是DOM的children属性,获取回来的子节点集合,他们与数组一样,具有索引和length属性,可以通过for循环写循环语句去循环遍历

在这里插入图片描述
在这里插入图片描述

伪数组和真数组的区别

他们的_proto_的区别
普通数组有push,shift,map但是伪数组没有

将伪数组转换为真数组的方法

法一:Array.prototype.slice.call(数据)

// 假设我们获取到了一个一个页面的所有div,这就是一个伪数组。
const fakeArr = document.getElementsByTagName('div');
// 我们可以进行重新赋值也可以用一个新变量接收或者在上方就进行转换简写都可以,笔者拿个新变量接收他。
// 如果你要重新赋值别忘了将const变成let。
const realArr = Array.prototype.slice.call(fakeArr);

法二:使用ES6的Array.from 方法

var obj ={0:"1",
    length: 1 };
    var  newarr= Array.from(obj)
    console.log(obj);
    newarr[1]="123"
    console.log(newarr);

http://www.kler.cn/a/409180.html

相关文章:

  • 养老院管理系统+小程序项目需求分析文档
  • 无线电磁波在自由空间的衰减
  • stable-diffusion-webui在conda pycharm中运行
  • 《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part1
  • 搜索插入位置
  • C++:用红黑树封装map与set-1
  • java Scanner
  • 【PHP】 环境以及插件的配置,自学笔记(一)
  • 【Ubuntu24.04】服务部署(虚拟机)
  • 微信万能门店小程序系统存在任意文件读取漏洞
  • 中标麒麟部署k8sV1.31版本详细步骤
  • 5.最长回文子串 python
  • Diffusion 和Stable Diffusion的数学和工作原理详细解释
  • 【君正T31开发记录】8.了解rtsp协议及设计模式
  • golang学习6-指针
  • 探索智能时代:从AI生成PPT到自动化未来
  • 【Elasticsearch入门到落地】2、正向索引和倒排索引
  • C++自动化测试:GTest 与 GitLab CI/CD 的完美融合
  • 如何做鸿蒙系统里的App开发需要哪些技术栈
  • Node.js 安装与环境配置详解:从入门到实战
  • 数据结构(顺序队列——c语言实现)
  • pytorch torch.sign() 方法介绍
  • CTF之密码学(培根密码)
  • SpringBoot集成多个rabbitmq
  • 安宝特方案 | AR助力紧急救援,科技守卫生命每一刻!
  • C++结构型设计模式之桥接模式