ECMAScript的数组

来源:互联网 发布:识别色块 算法 opencv 编辑:程序博客网 时间:2024/05/24 06:31

数组本身是对象,js中的数组长度是可随便改变的,元素的类型是任意混合的。
创建数组的两种方式:
var arr = new Array();
var arr = [1,2,3,4,true,’abcd’,new Date()]; 提倡用该方式
alert(arr.length); //数组的长度是7
arr.length=5; //改变其长度为5
alert(arr); //alert()方法参数为字符串,这里arr是对象会隐式调用 arr.toString()方法
//alert(arr.toString());


数组中的常用方法:
1、push()向数组尾部添加元素,返回新数组的长度
示例: var arr = [1,2,3,true];
var rePush = arr.push(1,2,true);
alert(arr); //1,2,3,true,1,2,true
alert(rePush); //7

2、pop()从数组的尾部删除一个元素,返回值为删除的元素
示例: var arr = [1,2,3,true];
var rePop = arr.pop();
alert(arr); //1,2,3
alert(rePop ); //true

3、shift()从数组的头部删除一个元素,返回值为删除的元素
示例: var arr = [1,2,3,true];
var reShift = arr.shift();
alert(arr); //2,3,true
alert(reShift ); //1

4、unshift()从数组的头部插入多个元素,返回值为新数组的长度
示例: var arr = [1,2,3,true];
var reUnshift = arr.unshift(2,4);
alert(arr); //2,4,1,2,3,true
alert(reUnshift ); //6

5、splice()追加元素:第一个参数 起始位置 ;第二个参数 表示截取的个数;第三个参数开始 表示追加的新元素; 返回截取的元素
示例: var arr1 = [1,2,3,4,5];
var reSplice = arr1.splice(1,2,3,4,5);
alert(arr1); //1,3,4,5,4,5
alert(reSplice); //2,3

6、slice()截取元素 左闭右开区间 不操作数据本身,返回值为截取的元素
示例: var arr1 = [1,2,3,4,5];
var reSlice = arr1.slice(2,4);
alert(arr1); //1,2,3,4,5
alert(reSlice); //3,4

7、concat() 不操作数组本身,将两个数组拼合、粘连,返回两个数组粘连的结果
示例: var arr1 = [1,2,3];
var arr2 = [true,4,5];
var reConcat = arr2.concat(arr1);
alert(reConcat); //true,4,5,1,2,3

8、join() 不操作数组本身,将数组元素用指定符号连接,返回连接后的字符串
示例: var arr1 = [1,2,3];
var reJoin = arr1.join(“-“);
alert(reJoin); //1-2-3

9、sort()正序排序 操作数组本身,返回排序后的数组(元素的字符比较非值比较)
示例: var arr2 = [10,2,4,1,7];
var reSort2 = arr2.sort();
alert(arr2); //1,10,2,4,7
alert(reSort2); //1,10,2,4,7
//自定义值排序

```function compare(value1,value2){    if(value1 < value2){        return -1;    }else if(value1>value2){        return 1;    }else{        return 0;    }}arr2.sort(compare);alert(arr2);          //1,2,4,7,10```

10、 reverse()倒序排序 操数组本身,按照元素的index进行倒序
示例: var arr1 = [5,2,1,4,3];
var rerev = arr1.reverse();
alert(arr1); //3,4,1,2,5
alert(rerev); //3,4,1,2,5

*************************ECMA5新特性*********************************
11、index() / indexOf() 在数组中获取指定值的索引(索引index从0开始),不存在返回-1
示例:var arr = [1,2,3,4,5,4,3,2,1];
var index = arr.indexOf(4); //3
2个参数时:第一个参数表示传值、第二个参数表示查找index起始位置
var index = arr.indexOf(3,4); //6
lastIndexOf()从后向前找

12、every() 对于数组每一个元素进行函数运算,如果都返回true,最后为true;有一个为false,最终结果为false
示例: var arr = [1,2,3,4,5,4,3,2,1];
var result = arr.every(function(item,index,array){
return item>0;
});
alert(result); //true

13、filter()对于数组每一个元素进行函数运算,把过滤后的结果返回
示例: var arr = [1,2,3,4,5,4,3,2,1];
var result = arr.filter(function(item,index,array){
return item>2;
});
alert(result); //3,4,5,4,3

14、forEach()循环数组的每一项的值,并执行一个方法
示例: var arr = [1,2,3,4,5,4,3,2,1];
arr.forEach(function(item,index,array){
alert(item); // 1 2 3 4 5 4 3 2 1
});

15、map()对于数组每一个元素进行函数运算,可通过函数的执行,把新的结果返回
示例: var arr = [1,2,3,4,5,4,3,2,1];
var re = arr.map(function(item,index,array){
return item*2;
});
alert(re); //2,4,6,8,10,8,6,4,2

16、some() 对于数组每一个元素进行函数运算,如果都返回false,最后为false;有一个为true,最终结果为true
示例: var arr = [1,2,3,4,5,4,3,2,1];
var re= arr.some(function(item,index,array){
return item>10;
});
alert(re); //false

17、reduce()、reduceRight()
参数说明:prev前一个值、当前值、索引位置、array
示例: var arr = [1,2,3,4,5,4,3,2,1];
var result = arr.reduce(function(prev,cur,index,array){
return prev+cur;
});
alert(result); //25
//从右向左计算
var result = arr.reduceRight(function(prev,cur,index,array){
return prev+cur;
});
alert(result);

0 0