forEach()Map() filter() reduce()

通俗讲就是:forEach() 是中心,一般只能遍历,其他的则是当想改变数组的时候用map,想对数组进行过滤用filter,累加数组用reduce。 说白点,就是一个源码,之后延伸的判断filter() 赋值map() 累加合并归纳的reduce()

Array.prototype.forEach(callback)

数组的每一个元素执行一次提供的函数。

回调函数callback

1.currentValue 当前元素

2.[index]  当前元素的索引值

3.array 当前数组
var arr = [1,2,3,4,5];
var newarr = arr.forEach(function(x){
 return x > 1;
});
console.log(newarr,arr);  //undifined  //1 2 3 4 5
 var arr = [1, 2, 3, 4, 5];
        var newarr = arr.forEach(function (x) {
            console.log(x)
        });
        console.log(newarr, arr);
//1
//2
//3
//4
//5
// 1 2 3 4 5

Array.prototype.map(callback)

创建一个新的数组,其结果是该数组中每个元素都调用一个提供的函数后返回的结果。(通俗说就是赋值)
 var arr = [1, 2, 0, 4, 5];
        var newarr = arr.map(function (x) {
            return x += 1;
        });
        console.log(newarr, arr);
        // 2,3,1,5,6     //arr 1,2,0,4,5

Array.prototype.filter(callback)

创建一个新数组,其结果是调用一个函数后过滤得的元素。 (通俗讲就是判断)
  var arr = [1, 2, 0, 4, 5];
        var newarr = arr.filter(function (x) {
            return x > 1;
        });
        console.log(newarr, arr);
        //newarr 2,4,5    //arr 1,2,0,4,5
和map的区分
var arr = [1, 2, 0, 4, 5];
        var newarr = arr.map(function (x) {
            return x > 1;
        });
        console.log(newarr, arr);
        //fasle true false true true true     //arr 1,2,0,4,5

Array.prototype.reduce()

接受一个函数作为累加器,依次加上数组的当前元素。
官方点的解释

当initialValue存在

参数为:
accumulator: 累加器,初始值为initialValue的值

item:数组的当前项,从第0项开始

index:数组的当前项对应的下标,从0开始

array:数组本身



当initialValue不存在

参数为:
accumulator: 累加器,初始值为数组第0项

item:数组的当前项,因为 accumulator为第0项,所以这里从1开始

index:数组的当前项对应的下标,从1开始

array:数组本身


简单点的解释

array.reduce(callback[,object])

回调函数

第一种情况没有 object

   prev 上一个
   next 下一个
	    var arr = [0, 1, 2, 3, 4,5];
        var a = arr.reduce(function (prev, next) {
            return prev + next;
        });
       console.log(a);
       //0+1
       //1+2
       //3+3
       //6+4
       //10+5     =>15

如果参数中传入了object

   object 传入的对象

   current 数组中的每个元素

描述:用于对数组进行归纳合并操作

	var arr = [56, 23, 44, 55, 67, 88, 22];
	var result = arr.reduce(function (obj, current) {
   		 // console.log(obj, current);
   		 current % 2 ? obj.odd++ : obj.even++;
   		 obj.sum += current;
   		 return obj;
		}, { even: 0, odd: 0, sum: 0 })
		console.log(result);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值