代码改变世界

javascript-Array类型 二

2013-02-26 11:06  y-z-f  阅读(182)  评论(0编辑  收藏  举报

五、排序

  I、反转数组

1 var nums = [1,2,3,4,5,6];
2 nums.reverse();
3 alert(nums); //弹出"6,5,4,3,2,1"字符串

 II、通过对比排序

var nums = [2,3,5,6,1,4];
nums.sort();
alert(nums); //弹出"1,2,3,4,5,6"字符串

除了直接调用"sort"之外,还可以传递一个对比的函数作为参数。如下所示:

1 var nums = [2,3,5,6,1,4];
2 nums.sort(function(value1,value2) {
3      return value2 - value1;
4 });
5 alert(nums); //弹出"6,5,4,3,2,1" 字符串

这里我传递了一个为"return value2 - value1"的对比函数。说简单点就是将数组从大到小排序。如果改成"return value1 - value2"就会变成从小到大排序。

 六、查找数据索引

 I、正序查找数据

  如果读者很细心,一定会发现如果同一个数据在数组中有多个怎么办。但是这里的方法是可以解决这个问题的(不是将所有符合的数据的索引变成数组返回)。

1 var nums = [1,2,3,4,5,1,2];
2 var sindex = nums.indexOf(2);
3 alert(sindex); // 弹出"1" 表示在索引为1的位置

这里大家一定会看到只返回的第一个找到的符合的数据的索引,并没有返回另一个符合的数据的索引。

这时我们还想找到后续的符合的数据的索引,只要在上面的代码下添加如下的代码:

1 sindex = nums.indexOf(sindex,2);
2 alert(sindex); //弹出 "6" 这个是第二个"2"的索引位置

 如果读者有兴趣可以编写一个递归来实现将所有符合数据的索引组织成数组返回。

 II、反序查找数据

 这里的反序就是从数组的最后一个数据开始向前找

1 var nums = [1,2,3,4,5,1,2];
2 var sindex = nums.lastIndexOf(2);
3 alert(sindex); //弹出 "6" 因为是从后向前找

 其他的就跟正序差不多相同,只是在继续查找下一个时是"sindex-1"而不是"sindex+1"了

七、缩小方法

  I、正序缩小

1 var nums = [1,2,3,4,5];
2 var sum = nums.reduce(function(pre,cur,index,object){
3                            return pre + cur;
4                });
5 alert(sum); //弹出"15" 计算方式为:1+2+3+4+5

 其实这种方法的原理很简单,第一个调用函数时"pre"的值为1,"cur"的值为2。返回3。第二次的"pre"的值为3,"cur"的值为3,返回6。以此类推,最终算得15。

 II、反序缩小

 其实就是从后向前的方式。规律还是上面的一样。

1 var nums = [1,2,3,4,5];
2 var sum = nums.reduceRight(function(pre,cur,index,obj){
3                             return pre + cur;
4                });
5 alert(sum); //弹出"15"

 八、其他方法

  js3 判断变量是否为Array类型

1 var obj = new Array();
2 if( obj instanceof Array ){
3    //do some thing
4 }

 js5判断变量是否为Array类型

1 var obj = new Array();
2 if(Array.isArray(obj)){
3     /do some thing
4 }

 到此为止,关于Array类型的学习结束了。