이 문제는 사실 for문으로 해결할 수 있는 간단한 문제다.
하지만 이 문제를 블로깅 하는 이유는 for문 말고도 스프레드 연산자로
아주 간단하게 만들 수 있기 때문이다.
function getAllLetters(str) { let arr = []; for (let i = 0; i < str.length; i++) { arr.push(str[i]); } return arr; }
위처럼 for문으로 작성할때는 각각 배열에 push로 넣어주는 모습이지만,
function getAllLetters(str) { let result = [...str] return result; }
스프레드 연산자를 이용하면 쉽고 간단하게 코드를 짤 수 있다.
스프레드 연산자를 이용해서 쉽게 풀기 2222
function getLargestElement(arr) { let storage = arr[0]; for(el of arr){ if(el > storage){ storage = el } } return storage; }
위는 배열에 적용할 수 있는 for of 문으로 풀이를 작성했다.
이를 스프레드 연산자로 풀어보면 아래와 같다.
let result = Math.max(...arr) return result;
위의 문제는 내가 배열인걸 인지하지 못하고 배열을 담는 변수에 중간에 실수한 내용을 담고있다.
function getEvenNumbers(arr) { let storage = []; for(el of arr){//1,2,3,4 if(el % 2 ===0){ //storage += el 이라고 썼는데 이러면 storage 리턴값이 2108 처럼 //숫자가 이어져서 나옴 = 배열안에 안들어감 따라서 push를 써주기 storage.push(el); } } return storage; }
function createPhoneNumber(arr) { //배열의 길이가 8보다 크면 끝에서 숫자 세서 slice //for문으로 돌게하고 if문으로 조건붙이기 let first = arr.slice(0,3).join("") let second = arr.slice(-8,-4).join("") let third = arr.slice(-4).join("") if(arr.length === 8 ){ first = '010' } return `(${first})${second}-${third}` }
생소해서 헷갈렸던 문제다.
하지만 조건이 간단해서 조금만 더 생각하면 금방 풀 수 있는 문제다.
배열의 길이가 8인 경우의 예외만 생각해본다면 어렵지 않다.