javascript 常用的一些原生方法
一丶javascript------ reduce()
reduce()方法:
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
reducer 函数接收4个参数:
- Accumulator (acc) (累计器)
- Current Value (cur) (当前值)
- Current Index (idx) (当前索引)
- 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,实现去重的目的。