javascript数组详解

1.数组的一些方法:

 1 <script type="text/javascript">
 2         //var arr = [1,2,3,4];  //性能略高
 3         var arr = new Array(1,2,3,4,5,6,7,8,15);//性能略低,没什么区别
 4         arr.push(9);//添加到尾部
 5         arr.pop();//删除尾部,一次删除一个
 6         arr.shift();//从头部删除一个
 7         arr.unshift();//从头部添加一个
 8         //splice 先删除一段,再添加一段元素splice(开始,长度)  ,,替换;
 9         arr.splice(2, 3);
10         arr.splice(2, 0, 'a','b','c');//删除0个元素,再添加abc
11         
12         //alert(arr);
13         //alert(arr.join('-'));//合并数组,变成字符串
14         arr.slice(1,3);//slice(开始, 结束),不包括结束位置,取子数组
15         var arr1 = ['23', '33','1','2','12'];
16         //arr1.sort();//排序,默认情况下,把所有的东西都当作字符串处理
17         arr1.sort(function(num1,num2){
18             return num1 - num2; //按大小排序
19             /* if(num1 < num2){
20                 return -1; //第一个比第二个小/靠左
21             }else if(num1 > num2){
22                 return 1; //右
23             }else{
24                 return 0; //一样
25             } */
26         });
27         //alert(arr1);
28         
29         var str = 'abc';//String
30         var str2 = new String('abc');//包装类
31         
32         var arr2 = ['张三', '失传','王五','李梅','六位',''];
33         arr2.sort(function (str1, str2){
34             return str1.localeCompare(str2);//按拼音顺序排序
35         });
36         //alert(arr2);
37         //alert(arr2.reverse());
38         
39         var str3 = 'wxy';
40         var str4 = 'digua';
41         //alert(str3+str4);
42         //alert(str3.concat(str4));//链接,数组链接
43         
44         var arr4 = [1,2,3,4,5];
45         //alert(arr4.toString());
46         //alert(arr4);//跟上面一样
47         arr4.toString = function(){
48             return 'abc';
49         }
50         function show (){
51             alert('a');
52         }
53         show.toString = function(){
54             return '就不让你看';
55         };
56         //alert(show);
57         var mu = 255;
58         //alert(mu.toString(16));
59         
60         //数组常用方法
61         //1.数组去重
62         //2.数组复制
63         /*数组去重
64         function hasContain(arra, num){
65             var i=0;
66             
67             for(i=0;i<arra.length;i++)
68             {
69                 if(arra[i]==num)
70                 {
71                     return true;
72                 }
73             }
74             
75             return false;
76         }
77 
78         var arra=[1,2,3,4,1,5,6,4,8];
79         var aResult=[];
80         var i=0;
81 
82         for(i=0;i<arra.length;i++)
83         {
84             if(!hasContain(aResult, arra[i]))
85             {
86                 aResult.push(arra[i]);
87             }
88         }
89 
90         alert(aResult);
91         */
92         
93         var arrc = [1,2,4,6];
94         
95         //var arrb = arrc.concat();
96         var arrb = arrc;
97         arrb.push(5);
98         alert(arrc);
99     </script>

 迭代方法:

every():对数组中的每一项运行给定函数,每一项返回true,则返回true

some():对数组中的每一项给定运行函数,对任一项返回true,则返回true

filter():对数组中的每一项给定运行函数,返回该函数会返回true的项构成的数组

map():对数组中的每一项给定运行函数,返回每次函数调用的结果组成的数组

forEach():对数组中的每一项给定运行函数,这个方法没有返回值

以上方法都不会修改数组中的包含的值

eg:

var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult1 = numbers.every(function(item,index,array){
    return (item>2);
});
//  alert(everyResult1); //false

var everyResult2 = numbers.some(function(item,index,array){
    return (item>2);
});
//  alert(everyResult2); //true

var everyResult3 = numbers.filter(function(item,index,array){
    return (item>2);
});
//  alert(everyResult3); //3,4,5,4,3

var everyResult4 = numbers.map(function(item,index,array){
    return item*2;
});
//  alert(everyResult4); //2,4,6,8,10,8,6,4,2

归并方法:

reduce():迭代数组的所有项,然后构建一个最终的返回组,reduce()从数组的第一项开始,逐个遍历到最后一项

reduceRight():迭代数组的所有项,然后构建一个最终的返回组,reduceRight()从数组的最后一项开始,逐个遍历到第一项

这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。传递给reduce()和reduceRight()的函数接收4个参数值:前一个值、当前值、项的索引和数值对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。

eg:

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
    return prev + cur;
});
alert(sum); //15
//第一次执行回调函数,prev是1,cur是2.第二次,prev是3(1加2的结果),cur是3(数组的第三项)。这个过程会持续到把数组中的每一项都访问一遍,最后返回结果。

var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev,cur,index,array){
    return prev + cur;
});
alert(sum); //15
//第一次执行回调函数,prev是5,cur是4。最终结果相同

 

posted @ 2013-08-07 11:26  远方的远方  阅读(324)  评论(0编辑  收藏  举报