javascript 常用的一些原生方法

一丶javascript------ reduce()

  reduce()方法:

  arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

 reducer 函数接收4个参数:

  1. Accumulator (acc) (累计器)
  2. Current Value (cur) (当前值)
  3. Current Index (idx) (当前索引)
  4. Source Array (src) (源数组)

 

arr.reduce(function(prev,cur,index,arr){
...
}, init);

参数解释:
pre:代表上一个元素(常用)
cru:代表当前元素(常用)
index:代表当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
arr:代表初始值

 具体使用方法:

var arr = [3,9,4,3,6,0,9];

//求数组之和
var sum = arr.reduce(function (prev, cur) {
    return prev + cur;
},0);
解析:init传入的值为0,则prev的值为0,cur的值为3;
起初:
[3,9,4,3,6,0,9]
第一次虚拟形成的数组:[3,9,4,3,6,0,9]  (0+3=3);
第二次虚拟形成的数组:[12,4,3,6,0,9] (3+9=12)
第三次虚拟形成的数组:[16,3,6,0,9] (12+4)
.。。。以此类推

其中arr的数组始终没有发生变化。

//求数组的最大值

var max = arr.reduce(function (prev, cur) {
    return Math.max(prev,cur);
})
解析: init的值为空,则索引值为1,则起始prev的值为3,cur的值为9;
pre的值的变化为:3--9--9--9--9--9--9

//数组去重

  var sum = arr.reduce(function(prev, cur) {
       prev.indexOf(cur) === -1 && prev.push(cur);
       return prev;
  }, []);
 
  解析:init的值为[],则prev的初始值为[];cur的初始值为3;
  当prev数组中不包含cur元素时,将cur元素加入到prev中,然后return出prev,实现去重的目的。
 

 

 

原文地址:https://www.cnblogs.com/8080zh/p/11153502.html