Immutability의 의미
다른 언어와 다르게 자바스크립트에서 문자열은 원시자료형이다. 원시자료형은 immutable value으로 메모리에 저장된 값이 변경되지 않는다는 의미이다.
let word = 'hello';
word = '안녕하세요';
위와같이 변수 word를 선언했을때, word는 메모리에 저장된 'hello'를 가리킨다. 그러나, '안녕하세요'를 재할당하면, 'hello'가 '안녕하세요'로 변경되지 않는다. 대신 변수 word는 메모리에 저장된 '안녕하세요'를 가리키게 된다.
문자열을 입력받아 연속된 한자리 홀수 숫자 사이에 '-'를 추가한 문자열을 리턴해야 합니다.
1. 문자열을 배열로 바꿨다. --> immutable의 의미를 혼동해 배열로 바꾸었다.
2. 변수 output에 빈 문자열을 할당했다.
3. 0번째 인덱스부터 마지막 글자까지 반복문을 실행한다.
3-1. 연속된 홀수가 있을때 해당 인덱스의 글자와 '-'를 output에 추가한다.
3-2. 연속된 홀수가 아니라면 해당 인덱스의 글자를 output에 추가한다.
4. output을 리턴한다.
function insertDash(str){
const splitted = str.split('');
let output = '';
for(let i=0;i<splitted.length;i++)
{
if(splitted[i]%2===1 && splitted[i+1]%2===1)
{
output = output + splitted[i] + '-'
}
else
{
output += splitted[i];
}
}
return output;
}
1. 변수 output을 선언하고 0번째 인덱스 글자를 할당한다.
2. 1번째 인덱스부터 마지막 글자까지 반복문을 실행한다.
2-1. 앞글자가 홀수이고 현재 글자도 홀수라면 앞글자 뒤에 '-'를 추가한다.
2-2. (앞글자가 홀수이든 아니든) output에 현재글자를 추가한다.
3. output을 리턴한다.
function insertDash(str){
let output = str[0];
for(let i=1; i<str.length; i++)
{
if(Number(str[i-1])%2 && Number(str[i])%2)
{
output = output + '-';
}
output = output + str[i]
}
return output;
}