1. map을 쓸 때는
- 내가 원하는 반환 값이 그 배열의 길이만큼 반환하는지!! 먼저 확인
- 그 배열의 "요소"를 가공해서 새로운 배열을 반환
- return 뒤에 로직이 새로 반환될 배열의 요소
다 아는 거 같다가도 헷갈린다..
2. forEach는
- 원래 반환값이 없고 안에 return 문이 있어도 undefined가 반환됨
그럼 언제 쓰이냐?
(1) forEach 문 안에서 요소마다 함수를 실행하거나
const numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) => {
console.log(number);
});
(2) 요소마다 "수정"할 때 효과적
const numbers = [1, 2, 3, 4, 5];
numbers.forEach((number, index, array) => {
array[index] = number * 2;
});
console.log(numbers); // [2, 4, 6, 8, 10]
3. reduce 메서드
(1) 초기값이 없는 경우
: 첫 cur는 2nd 요소
const numbers = [1, 2, 3, 4];
const dap = numbers.reduce((acc, cur) => {
console.log("현재 acc :", acc, "현재 cur :", cur);
return acc + cur;
});
console.log(dap);
(2) 초기값이 있는 경우
: 첫 cur는 1st 요소
const numbers = [1, 2, 3, 4];
const dap = numbers.reduce((acc, cur) => {
console.log("현재 acc :", acc, "현재 cur :", cur);
return acc + cur;
}, numbers[0]);
console.log(dap);
(3) reduce의 매개변수
let abc = dap.reduce((acc, curr, index) => {
return acc + curr * 3 ** (3 - index);
}, 0);
(4) reduce의 acc는 무조건 "더하기"가 아니라 "누적값"!!!
- 연산을 더하기를 쓸지 뭘 쓸지는 때에 따라 달라질 수 있음
let answer = [ 2,4,1,9,5]
let max = answer.reduce((acc, curr) => {
return acc > curr ? acc : curr;
}, answer[0]);
-> 이런 식으로 꼭 "더하기" 연산이 아니어도 누적값이라는 개념으로 배열의 최댓값을 구할 수 있음
4. Math.max( ) 안에 들어가야 할 것은 "숫자"!!!
let answer = [1,2,3,4,5]
Math.max(answer) => NaN
Math.max(...answer)
so, 배열을 넣고싶다면 ...로 풀어헤쳐서 넣어야 함
5. while 문의 조건은 반복문이 실행될 수 있는 조건이면서, 동시에 반복문이 종료되는 조건이어야 한다.
function solution(n) {
let arr = [ ];
while (n / 3 === 1) {
let num = n % 3;
arr.push(num);
n = Math.floor(n / 3);
}
return arr;
}
console.log(solution(45));
=> n은 3이어야만 반복문이 실행되므로 처음 n은 45이기 때문에 애초부터 while문이 실행되지 않음
6. Array.prototype.unshift( )
- unshift() 메서드는 새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이를 반환
const array1 = [1, 2, 3];
console.log(array1.unshift(4, 5));
console.log(array1);
// [4, 5, 1, 2, 3]
'TIL' 카테고리의 다른 글
useState()와 useRef (0) | 2024.02.01 |
---|---|
2024.01.31 TIL #문자열불변성-직접수정불가 #fill() #replace() #<ul> vs <ol> #line-height #Css속성값동적변경 (0) | 2024.01.31 |
2024.01.24 TIL #프로그래머스-행렬의덧셈 #함수의실행-매개변수호출 (0) | 2024.01.24 |
2024.01.23 TIL #typeof 연산자 #isNaN() #props #객체업데이트 (1) | 2024.01.24 |
2024.01.22 TIL #string.substring(a,b) #string.repeat(n) (1) | 2024.01.22 |