博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中Array对象
阅读量:5052 次
发布时间:2019-06-12

本文共 1730 字,大约阅读时间需要 5 分钟。

相信使用过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

另外你还可以使用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/archive/2012/05/28/2521365.html

你可能感兴趣的文章
Django 内建 中间件组件
查看>>
bootstrap-Table服务端分页,获取到的数据怎么再页面的表格里显示
查看>>
进程间通信系列 之 socket套接字及其实例
查看>>
天气预报插件
查看>>
Unity 游戏框架搭建 (十三) 无需继承的单例的模板
查看>>
模块与包
查看>>
mysql忘记root密码
查看>>
apache服务器中设置目录不可访问
查看>>
嵌入式Linux驱动学习之路(十)字符设备驱动-my_led
查看>>
【NOIP模拟】密码
查看>>
java容器---------手工实现Linkedlist 链表
查看>>
three.js 性能优化的几种方法
查看>>
《梦断代码》读书笔记(三)
查看>>
FreeMarker解析json数据
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
次序+“选择不重复的记录”(3)——最大记录
查看>>
Codeforces 450 C. Jzzhu and Chocolate
查看>>
[Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现
查看>>
ACdream 1115 Salmon And Cat (找规律&&打表)
查看>>
JSON、JSONP、Ajax的区别
查看>>