단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
스트링은 length사용이 가능하다. 따라서 단순하게
length가 짝수일 경우 두글자를 각각 뽑아서 더하기로 생각했다.
사실 문자열 두개를 더한다는거 까지는 생각을 못했다.
하지만 자바스크립트 처음배울때 나오는 문자열과 문자열을 더하면?
이거이거 나배운건데....?^^
function solution(s) {
var answer = s
let a = (answer.length) % 2
let c = answer.length
if (a === 0 ){
let d =answer[c / 2-1 ] + answer[c/2]
return d
} else {
let d =answer[parseInt(c / 2) ]
return d
}
}
우선 복잡하니 a는 문자열 길이를 2로 나눈나머지 즉 짝수일경우0, 홀수일경우 1일 될것이다. 암튼 a를 만들어주고
c 는 문자열의 길이라고 정리를해주었다. (굳이 미리선언하지 않아도 된다. )
그다음 if문을 사용하여, a===0일경우 즉 길이가 짝수일 경우 가운데 두개의 문자를 뽑아서 각각의 두개를 더하여 출력하도록 하였다.
반대로 홀수면 하나만 출력되도록 하였다.
이 if문은 3항연산자로도 쓸수 있을거 같다.
function solution(s) {
return s.length % 2 == 0 ? s.substr(s.length / 2 - 1, 2) : s.substr(Math.floor(s.length / 2), 1);
}
우선 삼항연산자를 사용하였다.
조건: 길이가 짝수일 경우
true: substring함수를 사용하여 가운데 두개의 문자를 출력하기 위해 인덱스 /2에 -1을 한 인덱스부터 2개를 출력하도록
false: substr함수 안에 floor함수를 사용했다.
floor함수는 쉽게말하자면 소숫자리 숫자를 버림해서 정수만 출력해준다. 따라서 5/2=2.5 -> 2로 출력되게끔 해주는 것이다.
substr: 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환합니다.
내가알고있기로는 substr 도 있고 substring 도 있다. 이둘의 차이는 아래와 같다.
str.substr(시작 인덱스, 추출 갯수)
str.substring(시작 인덱스번호, 끝 인덱스번호)
또다른 남의답
function solution(s) {
// 삼항 연산자의 형식은 다음과 같다. { 조건 ? 참일 때 : 거짓일 때 }
var answer = s.length%2 == 0 ? s.charAt((s.length/2)-1) + s.charAt((s.length/2)) : s.charAt((s.length/2));
return answer;
}
1.우선 charAt함수가 뭘까
charAt() 함수는 문자열에서 특정 인덱스에 위치하는 유니코드 단일문자를 반환합니다.
str.charAt(index)
2.만약 조건이 true라면 해당인덱스를 반환해주도록 하였다.
해당 인덱스를 출력해주는 함수로는
substring, charAt, indexOf함수가 있다.
이 셋의 차이는 뭘까
출처: https://unabated.tistory.com/entry/자바스크립트-charAt-indexOf-substring의-차이점 [랄라라:티스토리]
charAt(인수) - 인수번째의 문자를 읽어 냅니다.
예) "javascript".charAt(2)에는 'v'가 읽어 집니다. 0부터 시작하기 때문에 3번째인 'v'가 읽어 집니다.
indexOf(인수) - 인수가 들어있는 위치를 알려 줍니다.
예) "javascript".indexOf("s")에는 4가 읽어 집니다. 0부터 시작하기 때문입니다.(lastIndexOf는 뒤에서부터 셈)
substring(인수, 인수) - charAt은 문자하나를 읽어내지만 substring은 문자열을 읽어 냅니다.
예) "javascript".substring(1, 3)은 "ava"를 추출해냅니다. 0부터 시작하기 때문입니다.