map()是array的一个方法javascript
做用: 对array中每个元素调用自定义函数java
'use strict'; function pow(x){ return x*x; } var arr=[1,2,3,4,5] var newarray=arr.map(pow)
map的回调函数有三个参数:算法
callback(currentValue, index, array)一般只要第一个参数数组
PS: map()传入的参数是pow,即函数对象自己函数
一般map调用的自定义方法只包含一个参数测试
reduce()也是array的一个方法code
做用: 从数组的前两个元素开始,做为函数参数,传入函数获得结果,对象
结果再和下一个数组元素再一次调用函数,直到数组尽头排序
[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
PS: 一般reduce()调用的自定义方法只包含两个个参数索引
做用:把Array
的某些元素过滤掉,而后返回剩下的元素.
和map()
相似,Array
的filter()
也接收一个函数。和map()
不一样的是,filter()
把传入的函数依次做用于每一个元素,而后根据返回值是true
仍是false
决定保留仍是丢弃该元素。
//去掉空字符串
var arr = ['A', '', 'B', null, undefined, 'C', ' ']; var r = arr.filter(function (s) { return s && s.trim(); // 注意:IE9如下的版本没有trim()方法 }); r; // ['A', 'B', 'C']
一般咱们仅使用第一个参数,表示Array
的某个元素。回调函数还能够接收另外两个参数,表示元素的位置和数组自己:
var arr = ['A', 'B', 'C']; var r = arr.filter(function (element, index, self) { console.log(element); // 依次打印'A', 'B', 'C' console.log(index); // 依次打印0, 1, 2 console.log(self); // self就是变量arr return true; });
筛选素数:
function get_primes(arr){ if(elem===1){ return false; } for(var i=2;i<=elem/2;i++){ if(elem%i==0) { return false; } } return true; }); return x; }
PS: 关键在于正确实现一个“筛选”函数
默认排序会把全部元素转成String在排序,根据一个元素的ASCII值进行排序(非递减)(TimSort算法)
两两比较,当回调函数返回值大于0时,交换元素值
自定义数字排序
'use strict' var arr=[10,20,1,2]; arr.sort(function(x,y){ if (x < y) { return -1; } if (x > y) { return 1; } return 0; }); console.log(arr); // [1, 2, 10, 20]
数字倒序排列
var arr = [10, 20, 1, 2]; arr.sort(function (x, y) { if (x < y) { return 1; } if (x > y) { return -1; } return 0; }); // [20, 10, 2, 1]
做用: 能够判断数组的全部元素是否知足测试条件(经过函数提供)
every()是所有知足的时候返回true,一个不知足返回false,并终止检测
some()是所有不知足的时候返回false,有一个知足就返回true
做用: 查找第一个符合条件的元素
查找符合条件的第一个元素,若是找到了就返回这个元素,不然,返回undefined
做用: 查找第一个符合条件的元素的索引
查找符合条件的第一个元素,找到这个元素就返回他的索引,若是没有找到就返回-1
做用: 经常使用于遍历数组
(和map相似)把数组每一个元素依次传入函数,但不会返回新的数组.