• javascript中Array对象


    相信使用过Java或者是.NET的人对动态数组类Array(或者是类似的类)都不会陌生——因为这个类好处多多,可以无限扩展其长度大小范围,以便容纳更多的内容。其实在java中也有一个Array对象可以使用,它几乎也是万能的:

    【一】当动态数组使用:

    这是最最基本的Array使用方法,Array对象有三个“构造函数”:

    new Array();
    new Array(size);
    new Array(element0, element1, ..., elementn);

    第一个指定一个空的Array,第二个指定一个长度的Array,最后一个直接填充数据初始化长度和若干内容的Array。无论哪一种,一旦不够用了都可以往里边直接添加数据。添加数据的方法是:

    ArrayInstance[索引号,从0开始]=内容;

    当然您也可以通过for的方式循环遍历(注意:javascript根本没有int这种显式声明的类型,一律是弱类型的var

    for(var i=起始索引;i<arrayInstance.length;++i)
    {
         alert(arrayInstance[i]);
    }

    另外你还可以使用foreach方式(注意,javascript中没有foreach,还是用for的方式,有些类似java的for(变量in集合))

      var arr = new Array(1, 2, 3);
            for (var i in arr) {
                alert(i);
            }

    以上做法输出会有惊人的发现——竟然是0,1,2而不是1,2,3!Why?注意这里和C#或者java最大的不同在于——C#或者java是把foreach理解成IEnumerator接口对象,访问封装的内部数据;但是js中这样做导致的结果是你只能访问索引号而不是索引的内容,因此你正确的做法是:

      var arr = new Array(1, 2, 3);
            for (var i in arr) {
                alert(arr[i]);
            }

    除此之外,您还可以这样初始化数组:

    var arr=[1,2,3,……,内容];

    【当字典使用】

    下标不一定非要是数字(默认0开始),Array允许你直接自定义下标,这样一来使用过Dictionary的人往往乐开了花:

    var arr = new Array();
    arr["a"] = "a";
    arr["b"] = "b";

    但是注意,此时使用arr.length检测的结果是0!Why?因为这些并不是js的真正下标而是属性而已,属性不算在arr的长度之列,只有0,1,2……这样的下标才算

    遍历这些属性方法同遍历索引一样(使用for版本的foreach)

    之前说过当字典使用的时候属性并非下标,那么属性和下标区别是什么呢?一般地,js语法非常松散,属性并不需要“定义”后才“使用”,允许对已有的“方法类”(对象,并不是真正意义上的类)边动态添加边操作——

     function MyFun() {
                this.A = "a";
            }
            var mf = new MyFun();
            mf.B = "B";
            mf["C"] = "C";
            alert(mf.B);
            alert(mf.C);
            alert(mf.A);

    注意看粗体部分,就明白了,其实这是一个js的语法范畴的问题,Array作为一个对象也可以这样操作,任意一个js对象都可以这样操作,但是请记住,该对象必须通过new出来这样操作方可,直接调用(比如MyFun.B)是不可以的

    另外,这种“字典型”操作方式还可以和json媲美,因此字典型的初始化还允许:

      var a = { "A": "A","B":"B" };

    var 变量名 = {"键1":"值1","键2":"值2",……,"键n":"值n"};

    访问如同for版的foreach,而且允许动态添加键值对。

  • 相关阅读:
    JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别
    Transact-SQL 示例
    Transact-SQL 示例
    JQuery Easyui引入easyui-lang-zh_CN.js后出现乱码的问题解决方法
    easyui 表格底部加合计
    VS调试技巧之附加进程
    c#如何读取相机手机的拍摄时间
    调用 webapi的put和delete 报"Method Not Allowed" 405 错误。
    sqlserver数据库 去除字段中空格,换行符,回车符(使用replace语句)
    C#中yield return用法分析
  • 原文地址:https://www.cnblogs.com/ServiceboyNew/p/2521365.html
Copyright © 2020-2023  润新知