reverse 함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return해주세요.
x: 숫자 return: 뒤집어진 숫자를 반환!
예들 들어, x: 1234 return: 4321
x: -1234 return: -4321
x: 1230 return: 321
const reverse = x => {
let str = String(x)
let words = str.split("");
let reversedWords = words.reverse();
if (reversedWords[reversedWords.length-1] === '-'){
reversedWords.pop()
reversedWords.unshift('-')
}
let newWords = reversedWords.join('');
let newNum = Number(newWords);
return newNum;
}
point 1
String() : 괄호 안에 변수를 string type으로 반환하는 함수.
Number() : 괄호 안의 변수를 number type으로 반환하는 함수.
대문자로 시작하니 주의하세요. 사실 얘네는 이번 게시글의 메인 토픽은 아닙니다.
point 2
split() method는 String 객체'만' 를 지정한 구분자를 이용하여 여러 개의 문자열로 나눕니다. 괄호 안에는 separator가 들어갑니다. 리턴값은 배열로 주어집니다. 주의하세요. 문자열만 사용 가능한 메서드입니다.
cf) split()의 친구 slice()는 누굴까요? 다음 기회에 알아봅시다. 기회가 있다면요.
const str = 'The quick brown fox jumps over the lazy dog.';
const words = str.split(' ');
console.log(words);
위 코드에서 separator는 ' '빈 블랭크 열이므로, 단위 조각으로 끊어집니다. console.log(words)의 값은 아래와 같아요.
[ 'The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog.' ]
const str = 'The quick brown fox jumps over the lazy dog.';
const chars = str.split('');
console.log(chars);
반면 위 코드에서 separator는 ''빈 문자열이기 때문에, 각각의 문자 조각이 반환됩니다. 콘솔값은
[ 'T', 'h', 'e', ' ', 'q', 'u', 'i', 'c', 'k', ' ', 'b', 'r', 'o', 'w', 'n', ' ', 'f', 'o', 'x', ' ', 'j', 'u', 'm', 'p', 's', ' ', 'o', 'v', 'e', 'r', ' ', 't', 'h', 'e', ' ', 'l', 'a', 'z', 'y', ' ', 'd', 'o', 'g', '.' ]
처럼 빈칸, 마침표도 들어갔네요.
만약 separator값이 주어지지 않는다면 어떻게 될까요?
const str = 'The quick brown fox jumps over the lazy dog.';
const strCopy = str.split();
console.log(strCopy);
리턴값은
[ 'The quick brown fox jumps over the lazy dog.' ]
이라는 원래의 문장이 단일 개체를 가진 array로 반환되었습니다.
point 3
join() method는 배열의 모든 요소를 연결해 하나의 문자열로 반환합니다. 문자열을 참 좋아하네요. 괄호 안에는 역시나 separator가 들어갑니다. 차라리 glue가 낫지 않을까요?
const elements = ['Fire', 'Air', 'Water'];
console.log(elements.join());
그까짓 separator, 생략하고 조인을 실행하면 리턴값으로는 다음과 같은 문자열이 주어집니다.
'Fire,Air,Water'
네, 기본적으로 쉼표(,)를 넣어서 붙여주네요.
만약에 정말로 아무것도 없이 붙어 나오길 기대한다면 빈 문자열 ''을 넣어주셔야 합니다.
const elements = ['Fire', 'Air', 'Water'];
console.log(elements.join(''));
''입니다. ' '가 아니에요. 띄어쓰기가 있으면 띄어쓰기가 반영됩니다. 빈 문자열을 separator로 사용했을 때 리턴값은
'FireAirWater'
입니다.
그렇다면 띄어쓰기를 넣어볼까요? ' ' 이 빨간 거요.
const elements = ['Fire', 'Air', 'Water'];
console.log(elements.join(' '));
'Fire Air Water'
가 리턴됩니다.
다시한번, 문자열을 반환합니다.
스플릿은 문자를 먹고 배열을 만들고, 조인은 배열을 먹어 문자를 뱉어냅니다.
Tribute to Array 라고 부제를 지어봅시다.
풀이를 다시 한번 볼게요.
const reverse = x => {
let str = String(x)
let chars = str.split("");
>let reversedChars = chars.reverse();
if (reversedChars[reversedChars.length-1] === '-'){
> reversedChars.pop()
> reversedChars.unshift('-')
}
let newWords = reversedChars.join('');
let newNum = Number(newWords);
return newNum;
}
여기서 사용된 reverse, pop, unshift, 그리고 나오지는 않았지만 push 등 array를 위해 고안된 메소드는 아주 많습니다.
point 1
Arr.reverse() method는 배열의 순서를 반전시킵니다. 괄호는 장식일까요? 그랬으면 좋았을 텐데요. 메서드의 실행버튼 같은겁니다. 파라메터를 갖지 않는 함수라고 생각하면 될까요?
point 2
Arr.push() 의 괄호는 애석하게도 장식이 아닌데요. 괄호 안에는 배열끝에 추가하고자 하는 element(s)들이 들어갑니다. 복수도 가능합니다.
반환되는 값은 특이하게도 추가되고 난 array의 요소 갯수입니다. Arr.length라고 볼 수 있겠네요.
const animals = ['pigs', 'goats', 'sheep'];
const count = animals.push('cows');
console.log(count);
//정답은 4입니다. 돼지, 염소, 양, '소' 까지 해서 4개의 요소가 있으니까요!
이렇게 array의 elements 갯수를 반환합니다.
point 3
Arr.unshift()는 배열의 앞에 추가하고자 하는 요소(들)을 괄호 안에 넣습니다. 반환되는 값도 특이하게 새로 구성된 array.length입니다. 이것도 array의 elements 갯수를 반환하는 것에 주의하세요.
다시 말하지만, push()와 unshift()는 newArr.length(숫자)를 반환합니다요!
point 4
덧셈을 했으면 뺄셈도 해야 하지 않을까요? Arr.pop()은 배열의 마지막 요소를 제거하고 newArray 자체를 반환합니다. 얘는 수가 아니에요, 배열입니다.
point 5
마지막을 뺄 수 있다면 처음도 뺄 수 있어야 하지 않을까요? Arr.shift()는 배열의 첫 요소를 제거하고 짧아진 newArray를 반환합니다.
유감스럽게도 포인트가 너무 많아서 정리를 좀 해봅시다.
용도 | method | return |
---|---|---|
덧셈 | unshift() : 맨 앞에다 더함 | length값 (number) 반환 |
덧셈 | push() : 맨 뒤에다 더함 | length값 (number) 반환 |
뺄셈 | shift() : 맨 앞 요소를 뺌 | Array 반환 |
뺄셈 | pop() : 맨 뒷 요소를 뺌 | Array 반환 |
navigated by 가윤님