JavaScript 入门指南 - 数组
数组 (array) 是一种比较复杂的对象 (object) ,可以有多个不同数据型态 (data type) 的元素。有两种方式可以建立数组,第一种是利用数组的字面常数,也就是中括弧围起来的内容,里头用逗号分开每个元素
var a1 = [0.321, "to", 22, "spoon", true];
如果中括弧里面没有放任何东西,就会建立一个空数组,也就是没有元素的数组
var a2 = [];
另一种建立数组的方式是用数组的构造函数 (constructor) ,这要用 new 关键字 (keyword) ,小括弧内用逗号区隔的为数组元素
var a3 = new Array(0.321, "to", 22, "spoon", true);
上面 a1 与 a3 会得到具有相同内容的数组。存取数组中的元素则是利用中括弧与元素索引值,例如
var a1 = [0.321, "to", 22, "spoon", true];
var i;
for (i in a1) {
document.write(a1[i] + "<br / >");
}
for-in 循环 (loop) 中的 i 会依序取得 a1 的索引值,然后利用 a1[i] 取得每一个元素。
以下为数组的常用方法 (method)
| 方法 | 描述 |
|---|---|
| toString() | 返回对象的字符串形式 |
| valueOf() | 返回对象的数值 |
| concat([item1 [, item2 [, …]]]) | 连接各数组 |
| join(separator) | 连接数组中各个元素 |
| pop() | 移除数组中最后一个元素,并返回这个元素值 |
| push([item1 [, item2 [, …]]]) | 将新元素加入到数组的最后面,并返回数组的新长度 |
| reverse() | 倒转数组元素的顺序 |
| shift() | 移除数组中第一个元素,并返回这个元素值 |
| slice(start, end) | 拆解数组,并传递索引值范围的子数组 |
| sort(comparefn) | 排序数组中的元素,可提供排序函数为参数 |
| splice(start, deleteCount [, item1[, item2[ , …]]]) | 加入或删除元素 |
| unshift([item1 [, item2 [, …]]]) |
将新元素加入到数组的最前面,并返回数组的新长度 |
数组在 JavaScript 中很方便也很常用,我们举一例如下
<html><head><title>Array Demo</title><script>function run() {var a = [];var i;for (i = 1; i <101; i++) {a.push(i);}varsum=0;for (i in a) {sum += a[i];}vard=document.getElementById("display");d.innerHTML="1 + 2 + 3 + ... + 100 = "+ sum;}</script></head><bodyonload="run()"><divid="display"></div></body></html>
浏览器开启如下:

此例的第一个 for 循环建立一个整数 1 到 100 的数组,第二个 for-in 循环将数组中的所有整数累加起来,最后将总和显示在 id 属性为 display 的 HTML 元素中。
现在来想想怎么来建立密码表,首先要先建立英文小写字母表,很简单,我们由字符串 (string) 转成数组就行了
var alph = "abcdefghijklmnopqrstuvwxyz".split("", 26);
字符串的 split() 方法可将字符串中的子字符串转化为数组,第一个参数 (parameter) 为分隔符号,此利用空字符串 "" ,因此用每个字母当子字符串,第二个参数为数组元素的数量。
这样 alph 就会是一个英文小写字母表的数组。有了英文字母表,我们搅乱一下数组里头元素的顺序就是密码表了,可是数组没有内建搅乱的方法说,这时候我们需要洗牌演算法 (algorithm) 啰!
| 中英文术语对照 | |
|---|---|
| 数组 | array |
| 对象 | object |
| 数据类型 | data type |
| 建构方法 | constructor |
| 循环 | loop |
| 方法 | method |
| 字串 | string |
| 参数 | parameter |
| 演算法 |
algorithm |
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
