조건에따라서 걸러진 요소들을 모아 새로운 배열로 만들어줌
const isOdd = function (num) {
return num % 2 === 1;
};
let arr = [1, 2, 3, 4, 5, 6, 7];
let output = arr.filter(isOdd);
console.log(output); // [1,3,5,7]
map은 이렇게 하나의 데이터를 다른 데이터로 매핑(mapping) 할 때 사용된다.
배열의 모든 요소에 적용됨.
const double = function (num) {
return num * 2;
};
let arr = [1, 2, 3, 4, 5, 6, 7];
let output = arr.map(double);
console.log(output); // [2, 4, 6, 8, 10, 12, 14]
reduce는 이렇게 여러 데이터를, 하나의 데이터로 응축(reduce)할 때 사용된다.
const addAccCur = function (acc, cur) {
return acc + cur;
};
let arr = [1, 2, 3, 4, 5, 6, 7];
let output = arr.reduce(addAccCur);
console.log(output); // 28
function joinName(resultStr, user) {
resultStr = resultStr + user.name + ', ';
return resultStr;
}
let users = [
{ name: 'Tim', age: 40 },
{ name: 'Satya', age: 30 },
{ name: 'Sundar', age: 50 }
];
let strUser = users.reduce(joinName, ''); // 'Tim, Satya, Sundar, '
strUser = strUser.slice(0,-2); // 'Tim, Satya, Sundar'
function makeAddressBook(addressBook, user) {
let firstLetter = user.name[0];
if(firstLetter in addressBook) {
addressBook[firstLetter].push(user);
} else {
addressBook[firstLetter] = [];
addressBook[firstLetter].push(user);
}
return addressBook;
}
let users = [
{ name: 'Tim', age: 40 },
{ name: 'Satya', age: 30 },
{ name: 'Sundar', age: 50 }
];
users.reduce(makeAddressBook, {});
//{
// T: [ { name: 'Tim', age: 40 } ],
// S: [ { name: 'Satya', age: 30 }, { name: 'Sundar', age: 50 } ]
//}