js数组 reduce函数

reduce

使用 reduce 与 reduceRight 函数可以迭代数组的所有元素,reduce 从前开始 reduceRight 从后面开始。下面通过函数计算课程点击数的和。
reduce函数的第一个参数是执行函数,第二个参数是初始值

  • 传入第二个参数时将所有元素循环一遍
  • 不传第二个参数时从第二个元素开始循环
    执行函数的参数:
参数说明
prev上次调用回调函数返回的结果
cur当前元素值
index当前的索引值
array原数组
案例
  1. 统计元素出现的次数
            function countArrayELem(array, elem) {
			  return array.reduce((total, cur) => (total += cur == elem ? 1 : 0), 0);
			}
			let numbers = [1, 2, 1, 1, 5];
			console.log(countArrayELem(numbers, 1)); //3
  1. 取数组中的最大值
//取数组最大值
                function maxArray(array){
                    return array.reduce(((max,cur)=>max<cur?cur:max),array[0]);
                }
                let arr=[5,3,6,1,2,9];
               console.log(maxArray(arr));//9
  1. 取价格最高的商品
         let cart = [
 					 { name: "iphone", price: 12000 },
  					{ name: "imac", price: 25000 },
					  { name: "ipad", price: 3600 }
		];
                function maxGoods(cart){
                    return cart.reduce(((goods,cur)=>goods.price<cur.price?cur:goods),cart[0]);
                }
               console.log(maxGoods(cart)); //{name: 'imac', price: 25000}
  1. 获取价格超过1万的商品名称
 let goods = [
  { name: "iphone", price: 12000 },
  { name: "imac", price: 25000 },
  { name: "ipad", price: 3600 }
];
 function getGoods(goods,price){
     return goods.reduce(((arr,cur)=>{
        if(cur.price>price) arr.push(cur);
        return arr;
     }),[]).map(cur=>cur.name);
 }
 console.table(getGoods(goods,10000));
  1. 数组去重
 //数组去重
           let arr=[2,3,1,4,1,2];
           function clearArray(array){
               return array.reduce(((arr,cur)=>{
                   if(arr.includes(cur)=== false)
                //    arr.push(cur);  
                   arr = [...arr, cur];
                   return arr;
               }),[])
           };
           console.log(clearArray(arr));
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值