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,而且允许动态添加键值对。

原文地址:https://www.cnblogs.com/ServiceboyNew/p/2521365.html