Reduce() 배열 메소드의 사용 시나리오

정의: Reduce() 메서드는 누산기 역할을 하는 함수를 받으며, 배열의 각 값(왼쪽에서 오른쪽으로)이 감소하기 시작하여 최종적으로 값으로 계산됩니다.
구문: arr.reduce(function(prev,cur,index,arr){정의되지 않은
일련의 연산
}, init);
prev: 필수(초기 값 또는 계산 후 반환 값);
cur: 필수(현재 요소);
index: 선택사항(현재 요소의 인덱스)
arr: 선택사항(현재 요소가 속한 배열 객체)
init: 선택사항(함수에 전달된 초기 값)

시나리오 1: 배열 누적 및 곱셈

let arr1 = [1,2,3,4,5]
console.log(arr1.reduce((x,y)=>x+y));// 15
console.log(arr1.reduce((x,y)=>x*y));// 120

시나리오 2: 배열의 각 요소 발생 횟수 계산

let arr2 = ['a','b','c','d','a','b','c','a','b','a']
let num = arr2.reduce((prev,cur)=>{
    if(cur in prev){//如果prev(初始对象)包含cur(当前元素),数量累加
        prev[cur]++
    }else{
        prev[cur] = 1
    }
    return prev
},{});//初始值需要设置一个空的对象
console.log(num);// {a: 4, b: 3, c: 2, d: 1}

시나리오 3: 어레이 중복 제거

let arr3 = [1,2,3,4,3,2,1,2,3,1]
let remo = arr3.reduce((prev,cur)=>{
    if(prev.indexOf(cur)==-1){//如果prev没找到cur
        return prev.concat(cur)
    }else{
        return prev
    }
    // if(!prev.includes(cur)){//如果prev不包含cur
    //     return prev.concat(cur)
    // }else{
    //     return prev
    // }
},[]);// 初始值设置一个空数组
console.log(remo);// [1,2,3,4]

시나리오 4: 2차원 배열을 1차원 배열로 변환

let arr4 = [[0, 1], [2, 3], [4, 5]]
let newArr1 = arr4.reduce((prev,cur)=>{
     return prev.concat(cur)
 },[])
 console.log(newArr1); // [0, 1, 2, 3, 4, 5]

시나리오 5: 다차원 배열을 1차원 배열로 변환

let arr5 = [[0, 1], [2, 3], [4,[5,6,7,8]]]
function newArr(arr5){
    return arr5.reduce((prev,cur)=>prev.concat(Array.isArray(cur)?newArr(cur):cur),[])
}
console.log(newArr(arr5)); //[0, 1, 2, 3, 4, 5, 6, 7, 8]

시나리오 6: 객체 배열 에 값을 누적하는 중

let arr6 = [{a: 1}, {a:2}, {a:3}]
let sum = arr6.reduce( (prev, cur) => prev + cur.a ,0);
console.log(sum); // 6

시나리오 7: 배열에서 최대값 찾기

let arr7 = [1,5,9,4,3,7,12]
let maxNum = arr7.reduce((prev,cur)=>{
    return Math.max(prev,cur);// Math.max方法可以求出给定参数中最大的数,Math.min方法可以求出给定参数中最小的数
})
console.log(maxNum);// 12

 

 

 

 

おすすめ

転載: blog.csdn.net/qq_21473443/article/details/131760497
おすすめ