您的位置:首页 > Web前端 > JavaScript

JS数组用法总结

2011-01-15 22:58 615 查看
01.创建数组
//创建一个元素个数为0的数组
var mArray = [];
var mArray = new Array();

//创建一个元素个数为size的数组[每个数组元素的值均为"undefined"]
var mArray = new Array(size);

//创建数组,并使用"element_0, element_1, ..., element_n"参数列表赋值
var mArray = [element_0, element_1, ..., element_n];
var mArray = new Array(element_0, element_1, ..., element_n);

02.数组赋值
//使用下标访问赋值
//被跳过而未被赋值的元素,其值为undefined
var mArray = new Array("AA");
mArray[0] = "BB"; //mArray:["BB"],mArray.length:1
mArray[1] = "CC"; //mArray:["BB", "CC"],mArray.length:2
mArray[3] = "DD"; //mArray:["BB", "CC", undefined, "DD"],mArray.length:4

//unshift方法向数组的开头添加一个或多个元素,并返回新数组的长度
//语  法:mArray.unshift(element_0, element_1, ..., element_n)
var mArray = new Array("AA");
mArray.unshift("BB");       //mArray:["BB", "AA"],mArray.length:2
mArray.unshift("CC", "DD"); //mArray:["CC", "DD", "BB", "AA"],mArray.length:4

//push方法向数组的末尾添加一个或多个元素,并返回新数组的长度
//语  法:mArray.push(element_0, element_1, ..., element_n)
var mArray = new Array("AA");
mArray.push("BB");         //mArray:["AA", "BB"],mArray.length:2
mArray.push("CC", "DD");   //mArray:["AA", "BB", "CC", "DD"],mArray.length:4

//使用splice方法向数组指定位置前插入一个或多个元素
//语   法:mArray.splice(index,howmany,element_0, element_1, ..., element_n)
//参   数:index 必需。
//         表明添加/删除项目的位置,使用负数可从数组结尾处规定位置。
//参   数:howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
//参   数:element_0, element_n	可选。向数组添加的新项目。
//注   释:如果仅纯粹添加元素,则howmany的值需指定为0,此时方法返回值为"[]"
var mArray = new Array("AA", "BB", "CC");
mArray.splice(1, 0, "DD", "EE"); //mArray:["AA", "DD", "EE", "BB", "CC"]

//使用数组的length属性扩充数组
//设置length属性改变数组大小,如果设置的值比当前值大,数组将增大,
//新的元素被添加到数组的尾部,它们的值为undefined。
var mArray = new Array("AA");
mArray.length = 3; //mArray:["AA", undefined, undefined],mArray.length:3

03.删除数组元素
//使用pop方法删除、并返回数组的最后一个元素
//语  法:mArray.pop();
//注  释:删除数组的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。
//注  释:如果数组已经为空,则pop不改变数组,并返回undefined值。
var mArray = new Array("AA", "BB");
var item   = mArray.pop(); //mArray:["AA"],mArray.length:1,item:"BB"
var item   = mArray.pop(); //mArray:[],mArray.length:0,item:"AA"
var item   = mArray.pop(); //mArray:[],mArray.length:0,item:undefined

//使用shift方法删除、并返回数组的第一个元素
//语  法:mArray.shift()
//注  释:该方法删除数组的第一个元素,把数组长度减 1,并且返回它删除的元素的值。
//注  释:如果数组已经为空,则shift不改变数组,并返回undefined 值。
var mArray = new Array("AA", "BB");
var item   = mArray.shift(); //mArray:["BB"],mArray.length:1,item:"AA"
var item   = mArray.shift(); //mArray:[],mArray.length:0,item:"BB"
var item   = mArray.shift(); //mArray:[],mArray.length:0,item:undefined

//使用splice方法从指定位置开始,删除指定个数的元素
//语  法:mArray.splice(index,howmany)
//返回值:含有被删除的元素的数组
//注  释:如果不指定howmany的值,表明删除包含[index]之内及其以后所有的元素
var mArray = new Array("AA", "BB", "CC", "DD", "EE");
var ret    = mArray.splice(1, 2);//mArray:["AA", "DD", "EE"],ret:["BB", "CC"]
var ret    = mArray.splice(1);   //mArray:["AA"],ret:["DD", "EE"]

//使用数组的length属性截断数组
//设置length属性改变数组大小,如果设置的值比其当前值小,数组将被截断,丢失尾部元素
var mArray = new Array("AA", "BB", "CC", "DD", "EE");
mArray.length = 2; //mArray:["AA", "BB"],mArray.length:2

04.数组元素的遍历访问
var mArray = new Array("AA", "BB", "CC", "DD", "EE");

//使用数字下标来循环输出数组中的元素
for (var i = 0; i < mArray.length; i++) {
console.log(mArray[i]);
}

//使用 For...In 声明来循环输出数组中的元素
for (var i in mArray) {
console.log("mArray[" + i.toString() + "] =", mArray[i]);
}

05.数组操作
//使用slice截取数组
//语  法:mStart.slice(start, end)
//参  数:start	必需,规定从何处开始选取。
//        如果是负数,那么表明它从数组尾部开始算起的位置。
//        也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
//参  数:end 可选。规定从何处结束选取。
//        该参数是数组片断结束处的数组下标。
//        如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。
//        如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
//返回值:返回一个新数组,包含从start到end(不包括该元素)的mArray中的元素。
//注  释:该方法并不会修改数组,而是返回一个子数组。
//注  释:如果end未被规定,该方法会选取从start到数组结尾的所有元素。
var mArray = new Array("AA", "BB", "CC", "DD", "EE");
var sArray = mArray.slice(1, 3);
此时mArray的值为:["AA", "BB", "CC", "DD", "EE"]
此时sArray的值为:["BB", "CC"]

//使用concat方法接两个或多个数组或者元素
//语  法:mArray.concat(element_0, element_1, ..., element_n)
//参  数:element_X 该参数可以是具体的值,也可以是数组对象,可以是任意多个。
//返回值:返回一个新的数组。
//注  释:该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
var mArray = new Array("AA", "BB");
var sArray = mArray.concat("CC", "DD", ["EE"], ["FF", "GG"], "HH");
此时mArray的值为:["AA", "BB"]
此时sArray的值为:["AA", "BB", "CC", "DD", "EE", "FF", "GG", "HH"]

06.数组深拷贝
//使用slice我们可以构建一个深拷贝的新数组:
var mArray = new Array("AA", "BB", "CC", "DD", "EE");
var sArray = mArray.slice(0);
mArray[0]  = "FF";
sArray[0]  = "GG";
此时mArray的值为:["FF", "BB", "CC", "DD", "EE"]
此时sArray的值为:["GG", "BB", "CC", "DD", "EE"]

//使用concat也可以达到深拷贝的目的:
var mArray = new Array("AA", "BB", "CC", "DD", "EE");
var sArray = mArray.concat();
mArray[0]  = "HH";
sArray[0]  = "II";
此时mArray的值为:["HH", "BB", "CC", "DD", "EE"]
此时sArray的值为:["II", "BB", "CC", "DD", "EE"]

07.数组排序
//使用reverse方法反转数组中元素的顺序
//语  法:mArray.reverse()
//注  释:该方法会改变原来的数组,而不会创建新的数组
var mArray = new Array("AA", "BB", "CC", "DD", "EE");
mArray.reverse(); //mArray:["EE", "DD", "CC", "BB", "AA"]

//使用sort方法对数组的元素按给定的排序函数进行排序
//语  法:mArray.sort(sortby)
//参  数:sortby 可选。规定排序顺序。必须是函数。
//返回值:对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
//注  释:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序。
//注  释:如果想按照其他标准进行排序,就需要提供比较函数
//        该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字:
//        比较函数应该具有两个参数 a 和 b,其返回值规定如下:
//        若 a 不等 b,如果a需在前就返回小于0的值,反之就返回大于0的值
//        若 a 等于 b,则返回0
var mArray = new Array("EE", "CC", "DD", "AA", "BB");
function sortAscending(a, b) {
//该函数的作用使得数组中的元素按递增的顺序排序
return (a > b)?1:-1;
}
mArray.sort(sortAscending); //mArray:["AA", "BB", "CC", "DD", "EE"]

var mArray = new Array("EE", "CC", "DD", "AA", "BB");
function sortDecreasing(a, b) {
//该函数的作用使得数组中的元素按递减的顺序排序
return (a > b)?-1:1;
}
mArray.sort(sortDecreasing); //mArray:["EE", "DD", "CC", "BB", "AA"]

08.数组其他方法
//使用join方法把数组中的所有元素放入一个字符串
//语  法:mArray.join(separator)
//参  数:separator 可选,指定要使用的分隔符。
//        如果省略该参数,则使用逗号作为分隔符。
//返回值:返回一个字符串。
//        该字符串是通过将数组中每个元素转换为字符串,
//        如果是复杂类型,调用相应的toString函数,
//        然后把这些字符串连接起来,在两个元素之间插入separator字符串而生成的。
简单类型示例:
var mArray = new Array("AA", "BB", "CC", "DD", "EE");
var str    = mArray.join("#");   //str:"AA#BB#CC#DD#EE"

复杂类型示例:
function testItem(a, b) {
this.a = a;
this.b = b;
}
testItem.prototype.toString = function () {
return "{" + this.a + "|" + this.b + "}";
}

var aa = new testItem("AA", "BB");
var bb = new testItem("CC", "DD");

var mArray = new Array(aa, bb, "EE", "FF");
var str = mArray.join("#"); //str:"{AA|BB}#{CC|DD}#EE#FF"


09.对使用数组的辅助说明
//当作为函数参数传递时,作为引用参数
var mArray = new Array("AA", "BB");
function demoFunc(arr) {
//arr作为传入的数组类型,函数内直接对原数组操作
arr.push("CC", "DD", "EE");
}
demoFunc(mArray); //mArray:["AA", "BB", "CC", "DD", "EE"]


参考文档1.http://www.w3school.com.cn/js/js_obj_array.asp
2.http://www.w3school.com.cn/jsref/jsref_obj_array.asp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: