let arr = [1,2,3,4]
arr.reduce(실행함수, 초기값)
arr 배열의 각 인덱스 마다 실행함수를 실시 한다.
let arr = [1,2,3,4]
arr.reduce((acc, cur)=> acc+cur , 0) // 10
arr.reduce((acc, cur)=> acc+cur , 10) // 20
function isSum (acc, cur) {
return acc + cur // return 이 안들어가면 오류 발생
}
arr.reduce(isSum, 0) // 10
let arr = [[0,1], [2,3], [4,5]]
function isAcc (acc, cur) {
return acc.concat(cur) // return 이 안들어가면 오류 발생
}
arr.reduce(isAcc, []) // [0,1,2,3,4,5]
arr.reduce(isAcc) // [0,1,2,3,4,5]
arr.reduce( (acc, cur)=> acc.concat(cur), []) // [0,1,2,3,4,5]
arr.reduce( (acc, cur)=> acc.concat(cur)) // [0,1,2,3,4,5]
flat 메소드로 한번에 처리도 가능
let arr = [[0,1], [2,3], [4,5]]
arr.flat() // [0,1,2,3,4,5]
let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
function countedName (allNames, name) {
if(name in allNames){
allNames[name]++
}else {
allNames[name] = 1
}
return allNames
}
names.reduce(countedName, {})
// {Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}
let arr = [1, 2, 1, 2, 3, 5, 4, 5, 3, 4, 4, 4, 4];
let newArr = arr.sort((a,b)=>a-b)
function isFilterArr (acc, cur) {
if (acc.length === 0 || acc[acc.length-1] !== cur){
acc.push(cur)
}
return acc
}
newArr.reduce(isFilterArr, [])
// [1, 2, 3, 4, 5]