• 【JS复习笔记】04 数组


    JS里的数组其实并不是一个数组,它其实是一个对象,a[1]这种调用方式其实就是一个字面量为1的属性。

    因为这东西实际上是一个对象,所以你就可以理解下面这种声明了吧!

    var arrName=['我可以是一个字符串',1,true,null,undefined,[1,'23'],{name:'123'},NaN,Infinity];

    关于数组长度

    • 数组长度:arrName.length。
    • 数组长度没有上界,如果你用一个大于length的数组下标来存储一个元素,那么数组长度会变大以容纳新元素,不会发生越界错误。
    • 数组的length其实并不是表示数组的元素个数,它实际上表示的是数组的最大整数下标+1。
    • var arrName=[]
      arrName[10000]=1;

      就比如上面这段代码中arrName.length为10001,但是实际上你知道的,它只有一个元素。

    • 给arrName.length赋值,如果大于当前值,也不会分配更多空间,如果小于当前值,比如新值为100,会导致下标大于且等于100的的元素被删除掉。

    关于数组元素的删除

    • 前面讲到对象的删除为 delete obj.name或者 delte myObj["name"],而又说道数组其实是一个对象那么当然也是可以delete arrName[2];
    • 但是你要知道delete方法过后arrName[2]成了undefined,但是arrName[1]和arrName[3]值不变
    • 然而我们脑海中的数组元素的删除通常是想要arrName[3]前移去替代arrName[2]的位置
    • 所以JS提供了splice这种方法,arrName.splice(2,3),就是删除下标为2的元素开始的三个元素。当然对于大型数组来说效率不高。
    • var arrName=[1,2,3,4,5,6];
      arrName.length=50
      arrName.splice(2,3);//删除后数组为[1,2,6,undefined。。。],arrName.length为47

    关于判断一个值是否为数组 

    var isArray=function(value){
        return value && typeof value==='object' && value.constructor===Array;
    };

    但是上面的方法在识别不同窗口或frame里构造的数组时会失败,所以下面有一种更好的方法

    var isArray=function(value){
        return Object.prototype.toString.apply(value)==='[object Array]';
    };

    好吧,这种鬼东西记在这里就得了,别记在脑子里,毕竟容量有限。

    关于数组的属性与方法

    前面说过了,数组实际上就是对象。那么给数组添加方法和属性都可以像对象那样。

    有一点要注意的是,arrName.myName这种属性添加后,arrName.length并没有改变,因为这并不是一个整数类型的属性

  • 相关阅读:
    MySQL GROUP BY多个字段分组用法详解
    Linux下自动备份MySQL数据库并上传到远程FTP服务器
    mysql服务器主从数据库同步配置(转)
    centos上安装配置java WEB环境_java(转)
    Win7和Vista的安全机制对于应用程序读取配置文件相关操作的影响(虚拟重定向技术)
    firemonkey 手机屏幕自适应程序问题
    Delphi中无边框窗体应用程序使任务栏右键菜单有效的方法
    GetClass与RegisterClass的应用一例
    Delphi中的动态包,有详细建立包的步骤(答案很简单:因为包的功能强大)
    JS开发调试
  • 原文地址:https://www.cnblogs.com/vvjiang/p/5150081.html
Copyright © 2020-2023  润新知