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

[04]Web前端进阶—JS伪数组


js伪数组

  • 一、伪数组的特点
  • 二、伪数组
    • 常见的伪数组
    • 伪数组转真
  • 三、最后


一、伪数组的特点

  1. 具有lenght属性
  2. 可以使用下标访问数据
  3. 不具有数组的方法,比如push( ),pop( )等

二、伪数组

本质上是一个对象,有index、length等属性,但是不能使用数组的方法,如foreach( )、filter( )、map( )、find( )、reduce()等方法,但是能够通过遍历数组的方式进行访问(for 循环)

常见的伪数组

  1. 字符串之类的
  2. 函数的arguments(参数)、
  3. 通过document.getElementByTagName( )等获得的元素集合
  4. key为0,1,2数字且有length的模糊性的对象
 //1.字符串
    let str = 'hello';
    console.log(str.length);
    console.log(str[1]);


    //2.function的arguments对象
    let fun = function(a,b,c){
        //arguments是一个对象
        console.log(arguments);//Arguments { 0: 1, 1: 2, 2: "123", … }
        console.log(a+b);//3
    }
    fun(1,2,'123');


    //3.含有length的"假"对象
    let obj = {
        length:2
    }
    console.log(obj.length);//有length
    console.log(obj[1]);//undefined
    obj[1] = 'hello';//这样就有obj[1];
    console.log(obj);//{ 1: "hello", length: 2 }

伪数组转真

  1. ES6中将伪数组转换为真数组:var arr = Array.from(arguments);即可使用数组的方法

  2. ES5中将伪数组转换为真数组:var arr=Array.prototype.slice.call(arguments) 或 Array.prototype.slice.apply(arguments);

  3. 使用[].slice.call(arguments) 或 [].slice.apply(arguments)

  4. var arr = Array.of(arguments)

  5. var arr = new Array(arguments)

    注意:是返回一个新的数组
    
//例
let obj = {
        length:2
    }
    var arr = new Array(obj);
    var arr1 = Array.from(obj);
    var arr3 = Array.prototype.slice.call(obj);
    var arr4 = Array.prototype.slice.apply(obj)
    console.log(arr1);
    console.log(arr3);
    console.log(arr4);

三、最后

如若文章有误,作者虚心请教,谢谢阅读

相关文章:

  • 中华人民共和国消费者权益保护法
  • Spring-Web(一) RestTemplate使用与源码浅析
  • letax环境过程记录 20220831
  • fastapi+mongo+qlib:体系化构建AI量化投研平台
  • ClickHouse学习笔记之表引擎
  • 智能家居生态:华为、小米各异
  • arx 读入块表
  • 避孕套、安全套分类|常识|图文指南(杜蕾斯、冈本、杰士邦)
  • postgres源码解析 SysLogger辅助进程
  • MySql ocp认证之数据导入导出(五)
  • 论文阅读(10) 基于吸力的推进是动物高效游泳的基础(2015)
  • 《大数据之路:阿里巴巴大数据实践》-第2篇 数据模型篇 -第10章 维度设计
  • 【java】基础内容(4)
  • Perfetto分析进阶
  • Framework入门のPiex 6P源码(下载/编译/刷机)
  • crontab执行失败的多种原因
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • log4j2输出到kafka
  • underscore源码剖析之整体架构
  • vue总结
  • 从零搭建Koa2 Server
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 关于使用markdown的方法(引自CSDN教程)
  • 区块链技术特点之去中心化特性
  • 软件开发学习的5大技巧,你知道吗?
  • 微信小程序设置上一页数据
  • 我的zsh配置, 2019最新方案
  • 一、python与pycharm的安装
  • 用mpvue开发微信小程序
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 阿里云API、SDK和CLI应用实践方案
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 数据库巡检项
  • (06)Hive——正则表达式
  • (C#)一个最简单的链表类
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • ***检测工具之RKHunter AIDE
  • .NET Core 2.1路线图
  • .NET 材料检测系统崩溃分析
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .Net6使用WebSocket与前端进行通信
  • .Net语言中的StringBuilder:入门到精通
  • [\u4e00-\u9fa5] //匹配中文字符
  • [20190113]四校联考
  • [C++打怪升级]--学习总目录
  • [CISCN2019 华东南赛区]Web4
  • [COI2007] Sabor
  • [dts]Device Tree机制
  • [EULAR文摘] 脊柱放射学持续进展是否显著影响关节功能
  • [Firefly-Linux] RK3568 pca9555芯片驱动详解