数组reduce()方法

1、语法
arr.reduce(callback,[initialValue])
reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。
callback (执行数组中每个值的函数,包含四个参数)

 1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
 2、currentValue (数组中当前被处理的元素)
 3、index (当前元素在数组中的索引)
 4、array (调用 reduce 的数组)

initialValue (作为第一次调用 callback 的第一个参数。)

2、用法
(1)简单用法

let arr1 = [1,2,3,4,5]
  //求和
  let sum=arr1.reduce((pre,item)=>{
      return pre + item
  },0)
  console.log('sum=',sum);   //15
  //求积
  let mul = arr1.reduce((x,y)=>{
      return x*y
  })
  console.log('mul=',mul)    //120

(2)数组中元素出现的次数

let name=[1,5,2,1,6,5,1,2,4,2,4,3,5,6];
  let nameNum = name.reduce((pre,item)=>{
      if(item in pre){
          pre[item] ++
      }else{
          pre[item]=1
      }
      return pre
  },{})
  console.log('次数',nameNum)   //{1: 3, 2: 3, 3: 1, 4: 2, 5: 3, 6: 2}

(3)数组去重

let name=[1,5,2,1,6,5,1,2,4,2,4,3,5,6];
  let newArr=name.reduce((pre,item)=>{
       if(!pre.includes(item)){
           return pre.concat(item)
       }else{
           return pre
       }
   },[])
   console.log('newArr',newArr)   //[1,5,2,6,4,3]
quchong(){      
   /**
     * indexof()检索该值在数组中是否存在,不存在返回-1
     */
    let arr=[];
    this.arr1.forEach((item)=>{
        if(arr.indexOf(item)=== -1){
            arr.push(item)
        }
    })
    return arr;
}

(4)将二维数组转化为一维数组

let cat=[[1,2],[2,3],[3,4],[4,5]];
let newCat=cat.reduce((pre,item)=>{
return pre.concat(item)
},[])
console.log(‘二维’,newCat) //[1,2,2,3,3,4,4,5]

(5)多维数组转化为一维

let drunk=[[0,1],[1,2],[1,[1,2,3,4],5]];
let newDrunk=function(drunk){
return drunk.reduce((pre,item)=>pre.concat(Array.isArray(item)?newDrunk(item):item),[])
}
console.log(‘多维’,newDrunk(drunk)) //[0,1,1,2,1,1,2,3,4,5]

(6)对象中的属性求和

let result=[{
subject:‘math’,
score:10
},{
subject:‘math’,
score:10
},{
subject:‘math’,
score:10
}]
let total = result.reduce(function(pre,item){
return pre+item.score
},0)
console.log(‘分数和:’,total) //30

(7)将对象中的某个字段的值拼接为字符串
data()中定义的数据

arr:[{
name:‘测试一’,
value:1
},{
name:‘测试二’,
value:2
},{
name:‘测试三’,
value:3
},{
name:‘测试四’,
value:4
}]

computed

objectOfStr(){
let arr1=[];
let str = this.arr.reduce((pre,item)=>{
return arr1.push(item.value)
},[]);
arr1 = arr1.join()
return arr1;
}


你可能感兴趣的:(js)