[코딩테스트] 함수 공부 - toString, trim, split, map, fill

YJMINT·2023년 7월 11일
2

코딩테스트

목록 보기
2/6

◽️ 계기

백준에서 트럭주차 문제를 풀었다. 접근 방식은 맞은거 같은데 구현에서 애를 먹어 결국 다른 사람의 풀이를 보게 되었다. 이게 웬걸 내가 원하는대로 구현을 너무 잘 해놓으셨더라. 나는 계속 undefined, NaN 떠서 속상했었는데!! 이제 얼추 문제 접근은 잘 하는거 같으니, 구현에도 신경 써보고자 함수를 정리하게 되었다. 화이팅!

자주 사용하는 함수

1. toString()

  • String 타입으로 형 변환할 때 사용하는 함수
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');

왜 toString()을 사용하는지 의문이 들어 toString()을 빼고 input을 출력해보니 알 수 없는 Buffer값이 나왔다.
자바스크립트에서 파일 입출력을 할 때, Buffer 객체가 사용된다고 한다. Buffer 객체는 바이너리 데이터를 다루기 위해 도입된 것으로, 본질적으로 바이트 배열이다. 출력 값이 이상하게 보이는 이유는 Buffer 객체가 고유한 형식으로 데이터를 나타내기 때문이라고 한다. 따라서 원하는 값을 제대로 출력하고 싶다면, 파일 입출력 시 toString() 함수를 사용해야 한다는 걸 깨달았다.

2. trim()

  • 문자열 좌우에서 공백을 제거하는 함수
const str = " test ";
let trimStr = str.trim(); //test

3. split()

  • 문자열을 일정한 구분자로 자르는 함수
const str = "red orange yellow green";
let splitStr = str.split(" "); 

console.log(splitStr[0]) //red
console.log(splitStr[1]) //orange
console.log(splitStr[2]) //yellow
console.log(splitStr[3]) //green

다른 구분자나 limit 값을 넣을 수도 있다.

const str = "red,orange,yellow,green";
let splitStr = str.split(",", 2); 

console.log(splitStr[0]) //red
console.log(splitStr[1]) //orange
console.log(splitStr[2]) //undefined
console.log(splitStr[3]) //undefined

4. map()

  • 배열의 각 요소에 대해 주어진 함수를 적용한 결과로 새로운 배열을 생성하는 함수
  • 배열을 순회하는 여러 방법 중 하나
const numbers = [1, 2, 3, 4, 5];
let mapNumbers = numbers.map(e => e*2);
let printMapNumbers = mapnNumbers.map(e => console.log(e)); 
//2
//4
//6
//8
//10

console.log(mapArr); //[2, 4, 6, 8, 10]

arr에 있는 원소들을 하나씩 순회하며 새로운 결과값을 mapArr 배열에 저장한다.
mapArr에 있는 원소들을 하나씩 순회하며 원소값을 console에 출력한다.

< 번외 >

(1) forEach() 함수 사용

const numbers = [1, 2, 3, 4, 5];
numbers.forEach(number => console.log(number));
//1
//2
//3
//4
//5

console.log(numbers); //[1, 2, 3, 4, 5]

(2) 기본 for문 사용

for (i = 0; i < numbers.length; i++) {
  console.log(numbers[i]);
} 

(3) iterator 사용

for (const x of numbers) {
  console.log(x);
}

5. fill()

  • 배열을 같은 값으로 채우는 함수
const arr_0 = new Array(4).fill(0); //[0, 0, 0, 0]
const arr_A = new Array(3).fill('A'); //[A, A, A]
const arr_limit = new Array(5).fill('Hi', 2); //[<2 empty items>, 'Hi', 'Hi', 'Hi']

arr_0 배열은 길이가 4이고 0으로 초기화 되어 있다.
arr_A 배열은 길이가 3이고 'A'로 초기화 되어 있다.
arr_limit 배열의 arr_limit[2]부터 끝까지 'Hi'로 채워져 있다.

profile
YJMINT's develog

0개의 댓글