TIL - 20230523

sway3·2023년 5월 23일
0

TIL

목록 보기
1/4
post-thumbnail

오늘 새로 배운 내용을 간단하게 공부하여 적는 공간으로 잘못된 정보가 포함되어있을 수가 있습니다.

1. map()

프로그래머스 lv0 - 배열 두개 만들기 문제를 풀고 새로 공부하게 된 메소드이다.

function solution(numbers) {
	return numbers.map((num) => num * 2);
}

map() 은 인자로 콜백함수를 받고, 그 콜백함수의 첫번째 인자로 배열의 element, 두번째로 요소의 index, 세번째로 원래의 배열을 받는다고 한다. (이 글을 적으면서 index 와 원래의 배열도 인자로 받을 수 있다는 걸 배웠다.)

위의 예시는 콜백함수에서 한개의 매개변수 num 만을 사용하였다. numbers 배열의 요소들인 num을 하나씩 iterate 하여, num * 2를 적용한 값을 새로운 배열에 하나씩 넣어 리턴할 수 있게 된다.

empty 배열을 하나 만들어서 for 문으로 numbers 를 일일이 iterate 하여 새로운 배열에 하나씩 집어넣는 여러 줄의 코드를 한 줄로 표현할 수 있게 된다.

function solution(numbers) {
 	return numbers.reduce((acc, cur) => [...acc, cur * 2], []);
}

reduce 로도 표현할 수 있다. 이전 글에서 reduce 의 예시로 accumulator 의 값에 숫자만 할당할 수 있는 줄 알았는데, 위처럼 빈 배열을 초기값을 설정하여 사용할 수도 있다고 한다. ... 연산자 (스프레드 연산자) 도 등장하는데 이는 뒷부분에 좀 더 자세히 설명하도록 하겠다.

2. forEach()

프로그래머스 lv0 - 배열 두개 만들기 문제를 풀기 위해 첫 번째로 접근했던 방식이 forEach 였다.

Array.prototype.forEach()
Array.prototype.map()

mdn web docs 는 forEach()map() 을 다음과 같이 소개하고 있다.

  • The forEach() method executes a provided function once for each array element.
  • The map() method creates a new array populated with the results of calling a provided function on every element in the calling array.
let items = [1, 2, 3];

console.log(items.forEach((num) => num * 2));  // undefined
console.log(items.map((num) => num * 2));      // [2, 4, 6]

forEach()map() 모두 배열의 각 요소를 iterate 하여 콜백함수를 한 번씩 적용하는데, 가장 중요한 차이점으로 forEach() 는 언제나 undefined 를 리턴하고, map() 은 배열의 요소들에 콜백함수를 적용하여 새로운 array 를 리턴한다.

위의 예시에서 items 의 요소들에 모두 2를 곱하기 위해 forEach()map() 을 모두 써보았지만, map() 은 의도한대로 각 요소들에 2를 곱한 배열을 리턴하여 출력하였고, forEach() 는 undefined 를 반환하고 items 배열의 값을 바꾸지도 못했다.

forEach 은 단순히 요소들을 iterate 하며 특정 값과 비교해야할 상황 등에만 사용해야할 것 같다.

3. reverse()

let arr = [1, 2, 3];
let newarr = arr.reverse();   // [3, 2, 1]

말 그대로 배열의 요소를 역순으로 바꾸어 새 배열로 리턴해주는 메소드다.

4. ... 연산자 (spread operator)

function solution(my_string) {
    return [...my_string].reverse().join('');
}

프로그래머스 lv0 - 문자열 뒤집기 문제에서 발견한 연산자이다.

아직 완벽히는 이해하지 못해서 추후에 더 공부하고 수정하겠다.

일단 위의 예시에서는 my_string 을 피연산자로 받아 글자 하나 하나를 분리시키는 역할을 하는 것 같다. 그 후 새 객체에 담아 reverse() 로 역순으로 재배치 시키고 join('') 으로 글자들을 한개의 string로 다시 만들어냈다.

번외) join() 메소드는 배열 속의 string 요소들을 연결 시켜 하나의 string 으로 리턴하는데, 이때 매개변수로 ',', '.' 등등 원하는 문자를 string 사이사이에 집어넣어 값을 리턴할 수 있다.

5. substring()

프로그래머스 lv0 - 문자열 앞의 n글자 문제에서 발견한 메소드이다.

function solution(my_string, n) {
    return my_string.slice(0, n);
}

string 의 일부를 잘라내서 새로운 string 값을 리턴하는 slice() 대신 사용할 수 있는 메소드이다.

function solution(my_string, n) {
    return my_string.subString(0, n);
}

위와 같이 사용될 수 있다.

profile
병아리 개발자

0개의 댓글