배열.filter(function(배열의 요소, 인덱스, 받은배열){boolean})
으로 사용한다.filter
의 인자로 사용되는 콜백함수는 boolean
값을 반환해야 하며, 배열의 내부의 요소들을 전달하여 해당 조건에 만족하는 값만 걸러내어 다시 배열로 리턴한다.let arr = [1, 2, 3, 4, 5, 6, 7, 8]
arr.filter((el) => {
return el % 2 === 0 // 조건을 반드시 return 해주어야 한다.
})
// [2, 4, 6, 8]
배열.map(function(배열의 요소, 인덱스, 받은배열){로직})
으로 사용한다.let arr = [1, 2, 3]
arr.map((el) => {
return el * 2
})
// [2, 4, 6]
let userinfo =[
{name : 'Ann', age : 12},
{name : 'Mike', age : 20}
]
userinfo.map((user) => {
return Object.assign({}, user, { // 객체를 합치는 메소드
isAdult : user.age > 19 // boolean 값으로 반환됨
})
})
// 빈 객체에 user라는 각각의 객체와, isAdult를 가진 객체를 합치는 것.
//[
// {name : 'Ann', age : 12, isAdult : false},
// {name : 'Mike', age : 20, isAdult : true}
//]
배열.reduce(function(누적값, 현재요소, 인덱스, 받은배열){로직}, 초기값)
으로 사용한다.let arr = [1, 2, 3, 4, 5]
arr.map((acc, cur) => { // acc : 누적값, cur : 현재값
return acc + cur
})
// 15
// 초기값이 지정돼있지 않으므로,배열의 첫번째인 1이 초기값이 된다.
// 초기값(1)과 현재값(cur, 2)을 더하고, 해당 값을 누적값(acc)에 저장한다.
// acc 는 3이 되고, 이번 현재값인 3을 더하고, 그 결과를 acc에 저장한다.
// 이를 반복한다.
~만 걸러내겠다. (filter)
값을 ~로 바꾸겠다. (map)
값을 ~하여 하나로 바꾸겠다. (reduce)