메소드 동작 순서도
bblog tistory
dongmin님 medium
let arr = [1, 2, 3, 4, 5];
arr.map(function(num) {
return num * 2
});
console.log(arr) // [2, 4, 6, 8, 10]
let greeting = ['hi', 'hello', 'hola'];
let greeting2 = arr.map(function(str) {
return str.length;
});
console.log(greeting2) // [2, 5, 4]
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
return arr.map((ele) => ele % 2 ? 'odd' : 'even');
// 숫자인 경우 결과값이 0이 아닌 경우 모두 true, 0이면 false가 됨
// ["odd", "even", "odd", "even", "odd", "even", "odd", "even", "odd", "even"]
// [reduce 를 이용하여 똑같은 기능 구현하기]
return arr.reduce((acc, curr) => {
acc.push(curr % 2 ? 'odd' : 'even')
return acc;
}, [])
// ["odd", "even", "odd", "even", "odd", "even", "odd", "even", "odd", "even"]
콜백 함수만 봐서는 이 콜백 함수가 하는 일을 모두 다 알 수 없다. map은 부모 스코프 영역을 건드리지 않고 콜백 함수만을 목적으로 달성한다.
boolean
을 가진다. 리턴이 true인 요소들만 모아서 새로운 배열을 만든다. 만족하는 요소가 없다면 빈배열을 반환한다.let arr = [1,3,4,7,8,10,100,500];
let arr2 = arr.filter(function(el) {
return el % 5 === 0
})
console.log(arr2) // [10, 100, 500]
let arr = ['As', 'I', '', 'am'];
// [반복문]
for(let el of arr) {
if(el === ''){
continue;
}
// [filter]
arr.filter((el) => el !== '')
let arr = [1,3,4,7,8,10,100,500];
let arr2 = arr.find(function(el) {
return el % 5 === 0
});
console.log(arr2) // 10
let arr = [1, 2, 3, 4, 5];
let sum = arr.reduce(function(acc, curr) {
return acc + curr;
});
console.log(sum) // 15
초기값을 설정하지 않았기 때문에 초기값은 arr[0]이 들어온다. 그러므로 콜백 함수가 호출된
2
,3
,4
,5
에 대한 콜백 함수의 총 횟수는 4번이다.
let arr = [1, 2, 3, 4, 5]
let arr2 = arr.reduce(function(prev, curr) {
prev.push(curr * 2);
return prev;
}, [])
console.log(arr2) // [2, 4, 6, 8, 10]
let five = [1, 3, 5, 7, 9, 10, 45, 50]
let collection = five.reduce(function(prev, curr) {
if(curr % 5 === 0) {
prev.push(curr);
}
return prev
});
console.log(collection) // [5, 10, 45, 50]
let five = [1,3,5,7,10,15, 50, 45];
let findOne = five.reduce(function(prev, curr) {
if(curr % 5 === 0 && typeof prev === 'undefined') {
prev = curr;
}
return prev;
}, undefined);
console.log(findOne) // 5
let arr = ['if','you','like','it', 'then', 'i','like', 'it']
return arr.reduce(function(frequency, word) {
if(frequency[word] === undefined) {
frequency[word] = 1;
} else {
frequency[word] += 1;
}
return frequency;
},{})
// {if: 1, you: 1, like: 2, it: 2, then: 1, i : 1}
let longest = arr.reduce(
function (a, b) {
return a.length > b.length ? a : b;
}
);
const array = ['9', '91', '95', '96', '99'];
const x = array
.reduce((acc, curr, i, arr) => {
if(i === 2) arr.splice(1); // eject early
return acc += curr;
}, '');
console.log('x: ', x);
// x: 99195