이 포스트는 엘리스 AI 트랙 4기 강의를 듣고 정리한 내용입니다.
문자열 조작하기
문장에서 각 알파벳이 몇개 존재하는지 출력하는 알고리즘을 구현해 보았다. Javascript의 문자열을 조작할 수 있는 내장함수를 사용했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const stringControll = "hi my name is marshmello!!";
const alpha_count = stringControll
.trim()
.split("")
.filter((alpha) => alpha >= "a" && alpha <= "z")
.reduce((map, char) => {
if (!map[char]) {
map[char] = 0;
}
map[char]++;
return map;
}, {});
console.log(alpha_count);
trim()
trim()
은 문자열의 앞, 뒤에 공백이 존재할 경우 공백을 없애주는 함수이다.
split()
split()
은 문자열에서 지정된 구분자를 사용해서 여러개의 문자열로 나눠 배열을 반환해 준다.
배열 다루기 (filter, reduce, map)
filter()
filter()
는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열을 반환해 준다.
1
2
3
const a = [1, 2, 3, 4, 5];
const filter_a = a.filter((v) => v % 2 == 0);
filter()
를 사용해 배열 안에서 짝수인 값만 반환하는 코드이다. v
는 배열의 인자를 차례대로 돌고, =>
뒤에는 조건이 들어간다. 조건이 맞는 값들만 새로운 배열에 저장된다.
reduce()
1
arr.reduce(callback[, initialValue])
reducer()
의 구조는 callback
과 initialValue
로 구성되며, callback
에는 네 가지의 매개변수가 있다.
- accumulator 누산기는 콜백 함수의 반환값을 누적한다. 콜백의 첫 번째 호출이면서
initialValue
를 제공한 경우에는initialValue
의 값이다. - currentValue 처리할 현재 요소이다.
- currentIndex 처리할 현재 요소의 인덱스.
initialValue
를 제공한 경우 0, 아니면 1부터 시작한다. - array
reduce()
를 호출한 배열이다. - initialValue
callback
의 최초 호출에서 첫 번째 인수에 제공하는 값이다. 초기값을 제공하지 않으면 배열의 첫 번째 요소를 사용한다. 빈 배열에서 초기값 없이reduce()
를 호출하면 오류가 발생하게 된다.
currentValue
, array
, initialValue
는 필수 인자는 아니다.
1
2
3
4
5
6
7
8
const a = [1, 2, 3, 4, 5];
// reducer 함수 정의
const reducer = (prev, curr) => prev + curr;
const reduce_result = a.reduce(reducer);
// reduce 함수 내에서 reducer 정의
const reduce_inner = a.reduce((prev, curr) => prev + curr);
reduce()
는 배열의 각 요소에 대해 주어진 reducer
함수를 실행하고, 하나의 결과값을 반환한다. reducer
함수는 따로 함수로 선언해서 사용할 수도 있고, reduce()
내에서 정의할 수도 있다.
map()
1
2
3
4
const aa = [1, 2, 3, 4, 5];
const map_a = aa.map((v) => v * 2);
console.log(map_a); // [ 2, 4, 6, 8, 10 ]
map()
메서드는 배열 내의 모든 요소 각각에 대해 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다.
1
arr.map(callback(currentValue[, index[, array]])[, thisArg])
callback()
은 세 가지 인자를 가진다.
- currentValue: 처리할 현재 요소
- index: 처리할 요소의 인덱스
- array:
map()
을 호출한 배열 - thisArg:
callback
을 실행할 때this
로 사용되는 값
index
와 array
, thisArg
는 필수 요소는 아니다. map()
은 배열의 각 요소에 대해 실행한 callback
의 결과를 모은 새로운 배열을 반환한다.