ES5中新增数组的方法

1.indexof()

格式:数组.index(item, start);

参数: item 任意的数据;

start 下标 查找的起始位置(可以不传入,默认是0)

功能:在数组中查找第一次出现item元素下标,从start开始去查找

返回值: -1 没有查找到 >=0 查找到的元素的下标。

代码:


var arr = [10, 20, 30, 40, 50, 20, 30];

       var index = arr.indexOf(120, 2);

       alert(index);

2、forEach ()数组的遍历

forEach 是 ES5 中操作数组的一种方法,主要功能是遍历数组,事实上for 循环的加强版,该语句需要一个回调函数,作为参数。回调函数的形参,依次为,value:遍历的数组内容;index:对应的数组索引,array:数组本身。

代码:

var arr = [10, 20, 30, 40, 50];

       arr.forEach(function(item, index, arr){

        /* 

          item当前遍历到的元素

          index当前遍历到元素的下标

          arr数组本身

         */

         document.write(item + ", " + index + ", " + arr + "<br/>");

       });

3、map()映射

功能:根据条件把原来的数组变成一个新的数组

代码:


var arr = [10, 20, 30, 40, 50];

       var newArr = arr.map(function(item, index, arr){

         //遍历要做的事情 映射关系

        return item * 1.3;//每一个映射要反应的关系

       });

       alert(newArr);

       alert(arr);

4.filter()

功能:根据条件对原数组进行过滤,不该变原来的数组。

代码:


var arr = [10, 20, 30, 40, 50];

        var newArr = arr.filter(function(item, index, arr){

          //过滤的条件

          return item > 20;//过滤数组中大于20的数

        });

        alert(newArr);

        alert(arr);

5、some()

功能:在数组中查找是否有符合条件的元素,有返回true,没有返回false。

短路操作:只要找到符合条件的元素,后面的循环就停止了。
代码:


var arr = [10, 20, 30, 40, 50];

        var res = arr.some(function(item, index, arr){

          //过滤的条件

          return item > 20;

        });

        alert(res);

        alert(arr);

6、 every ()

功能:在数组中查找每一个元素是否有符合条件,符合返回true,不符合返回false。

短路操作:只要找到不符合条件的元素,后面的循环就停止了。

代码:


var arr = [10, 20, 30, 40, 50];

        var res = arr.every(function(item, index, arr){

          alert(item);

          //过滤的条件

          return item < 30;

        });

        alert(res);

        alert(arr);

7、reduce 归并(累加器)

通常用来做数组的累加,用prev + next,对下一元素进行归并

prev 第一次是(即初始值)下标为0的元素,第二次开始 上一次遍历后的返回值;

next 从下标1开始,当前遍历到的元素

arr数组本身

代码举例:


var arr = [10, 20, 30, 40, 50];

        var res = arr.reduce(function(prev, next, index, arr){

          alert(prev + ", " + next);

          return prev + next;

        });

        alert(res);

运行上面的代码我们知道,

第一次结果是10,20(即初始值为10,下一个元素为20)

第二次结果是30,30(把10和20归并后值为30,下一个元素为30)

第三次结果是60,40(30和30归并后值为60,下一个元素为40)

第四次结果是100,50(60和40归并后值为100,下一个元素为50)

第五次结果是150(即100和50归并后的值)