객체값이 왜 NaN가 되는지 모르겠습니다.
조회수 1645회
안녕하세요?
var b = fn('AACBDB')
여기서 일치하는 알파벳을 객체값에 넣고 일치할 경우 수를 증가 하고 싶은데, NaN이 되어서 질문 드립니다.
{
A:2,
B:2,
C:1
}
이런 식으로 하고 싶습니다. 아래는 코드 원문입니다.
function fn (str) {
var result = '';
var characters = {};
var strArr = str.split('');
var strCopy = str.split('');
for(var i = 0;i < strArr.length; i++){
if(strArr[i] === strCopy[i]){
characters[strArr[i]]++;
};
};
console.log(characters);
return result;
};
감사합니다.
2 답변
-
위 코드에서 characters 의 각 요소의 값이 undefined 에서 연산을 시작하니 NaN 가 나오는 것 같습니다.
그래서 아래와 같이 수정 하여야 할 것 같습니다.
function fn (str) { var characters = {}; var strArr = str.split(''); for(var i = 0;i < strArr.length; i++){ if(characters[strArr[i]] === undefined) { characters[strArr[i]] = 1; } else { characters[strArr[i]] += 1; } } // console.log(characters); return characters; }; var results = fn('BBBCCCEEEYYUUTTTTTTTT'); console.log(results);
실행결과 :
{ B: 3, C: 3, E: 3, Y: 2, U: 2, T: 8 }
-
characters
객체에 해당 속성으로 초기값이 설정이 안되어 있어서 그런 것 같네요 :-)초기값이 숫자로 설정되었는지 확인해주는 과정이 추가된다면 해결될 것 같습니다..
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력