javascript学习笔记之数组

发表于: sitebuild | 作者: | 日期: 2008/11/14 05:11

基本概念
就像JavaScript语言本身宽松灵活的风格一样,JavaScript数组也具有类似的特性。虽然JavaScript不像java语言,没有有强大的容器框架(List、Set、Map等)的支撑,但JavaScript数组却完全可以模拟出类似的数据结构。

数组的创建

创建一个空数组:

var arr = new Array();

创建一个数组:

var arr = new Array(‘aaa’,’bbb’,’ccc’);

创建一个长度为10的数组:

var arr = new Array(10);

在javascript1.1中,上述语句有效,在javascript1.2中,上述语句将创建一个长度为1内容为10的数组。所以,还是尽量不要使用指定长度的方式来创建数组。

通过数组直接量(javascript1.2)创建数组:

var arr1 = [‘aaa’,’bbb’,’ccc’];

JavaScript的数组同php的数组一样,你可以指定长度,但是却可以随时改变其长度。在JavaScript中,只有那些真正存储在数组中的元素才能够分配到内存。比如声明如下:

arr[0] = ‘aaa’;
arr[1000] = ‘bbb’;

那么,实际分类内存的只有第0号元素和第1000号元素,而1–999号元素并没有分配内存。

数组的元素的访问

同其他语言一样,JavaScript中同样适用[]对数组元素进行访问:


//获取数组的元素值
var testGetArrValue=arrayObj[1];
//给数组元素赋予新的值
arrayObj[1]= “这是新值”;

遍历数组

var strs = new Array(‘aaa’,’bbb’,’ccc’);
for(var i = 0; i < strs.length; i++){ alert(strs[i]); }

数组元素的添加

虽然创建数组的时候我们指定了数组的长度,但却可以随时改变这个值:


var strs = new Array(3);
strs[4] = ‘darkmi’;
for(var i = 0; i < strs.length; i++){ alert(strs[i]); }

该JavaScript代码片段的输出为前三个alert窗口显示“undefined”,第四个alert窗口显示“darkmi”。

另外我们也可以使用JavaScript数组对象的push方法将一个或多个新元素添加到数组结尾,push方法还会返回数组新长度。

push方法的原型如下:

arrayObj. push([item1 [item2 [. . . [itemN ]]]]);

push方法示例:

var strs = [‘aaa’, ‘bbb’, ‘ccc’];
strs.push(‘ddd’, ‘eee’);
for(var i = 0; i < strs.length; i++){ alert(strs[i]); }

unshift方法将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度。

unshift方法的原型如下:

arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);

unshift方法示例:

var strs = [‘ddd’, ‘eee’];
strs.unshift(‘aaa’, ‘bbb’, ‘ccc’);
for(var i = 0; i < strs.length; i++){ alert(strs[i]); }

splice方法将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回数组新长度。


arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);

数组元素的删除

移除最后一个元素并返回该元素值

arrayObj.pop();

移除最前一个元素并返回该元素值,数组中元素自动前移

arrayObj.shift();

删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素。

arrayObj.splice(deletePos,deleteCount);

数组的截取和合并
以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素

arrayObj.slice(start, [end]);

将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组

arrayObj.concat([item1[, item2[, . . . [,itemN]]]]);

数组的拷贝

返回数组的拷贝数组,注意是一个新的数组,不是指向

arrayObj.slice(0);

返回数组的拷贝数组,注意是一个新的数组,不是指向

arrayObj.concat();

数组元素的排序
反转元素(最前的排到最后、最后的排到最前),返回数组地址

arrayObj.reverse();

反转元素(最前的排到最后、最后的排到最前),返回数组地址

arrayObj.sort();

数组元素的字符串化

返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。

arrayObj.join(separator);

: https://blog.darkmi.com/2008/11/14/481.html

本文相关评论 - 1条评论都没有呢
Post a comment now » 本文目前不可评论

No comments yet.

Sorry, the comment form is closed at this time.