JS--Array的常用方法map、reduce、filter、forEach、indexOf

来源:互联网 发布:centos 7服务器版安装 编辑:程序博客网 时间:2024/05/16 12:38

      我对此的理解就是map 用来操作单个元素的的并行器,reduce就是将每个元素进行叠加的行为操作器,filter就是个条件过滤器,forEach与for作用一样,使用方法不同,indexOf就是判断是否存在数组中并返回位置下标。

下面举出来个例子可以很好的看出来这几个内建方法的使用方法及自身的特点:

首先自定义一个数组,之后代码都会用到:
            var arr = [1,3,5,7,9,1,2,3,4,5];

1、map

    //对每个元素进行相同的求平方操作    var result1 = arr.map(mul);    function mul(x){        return x*x;    }    console.log(result1);

2、reduce

    //接收两个参数,reduce(pre,current)把结果继续和序列的下一个元素做累积计算    var result2 = arr.reduce(function(x,y){        return x+y;    },0);    console.log(result2);

3、filter

    //目的是找重复的元素    function duplicates(arr) {        return arr.filter(function(item,index){            return arr.indexOf(item)==index && arr.lastIndexOf(item)!=index;        });    }

      return返回的是满足条件的元素,duplicates最终是返回一个数组。显而易见的条件过滤器。

4、forEach

//Uses forEach to iteratearr.forEach(function(item,index){    console.log(item);});

5、indexOf

      indexOf()方法返回在该数组中第一个找到的元素位置,如果它不存在则返回-1。

var arr1 = ['apple','orange','pear'];console.log("found:", arr1.indexOf("orange") != -1);

6、小结

      看一看map这个函数,当你需要对数组里的每个元素依次做一些操作时,而并不在乎处理这些元素的顺序。你可以向前或向后遍历整个数组,得到的结果是一样的,不是吗? 事实上,如果你的机器是2cpu的,你可以写出一些程序让每个cpu个处理一半的元素,你的map一下子就变快了2倍。
或者,只是个假设,在你遍布全球的数个数据中心里,你有成千上万的服务器,你有一个非常非常大的数组,我说过,只是假设,它们装载着整个互联网的内容信息。那现在,你就可以在你的成千上万的计算机上运行map函数,每个机器都能分摊掉计算中的一小部分任务。

      所以,如今,举个例子,要想写出一个十分高效的能搜索整个互联网内容信息的代码,你只需要简单的用基本搜索字符串当作参数来调用map函数就行了。

      像map 和 reduce这样的函数每个人都可以使用,当人们使用它时,你只需要找到一个编程能手写出最困难的调用map 和 reduce 函数的代码,让它们能够运行在全球大量的并行执行的计算机上,而以前旧的运行的很好的代码只需要调用这个循环操作,唯一不同的是,它们获得了比以前千万倍快的速度,这意味着你能做瞬间处理完巨大的计算工作。

阅读全文
0 0