리액트

String.legnth 에 대하여

두캔두잇 2024. 11. 26. 21:46

최근에 기본 문법부터 다시 공부하고자 여러 메서드를 사용하고 있다. 그 중 반복이 필요한 부분은 보통 map을 통해 처리를 했지만 가장 원시적인 방법으로 for문을 주로 사용해 처리를 하려고 한다. 그 중 몰랐다면 몰랐을거고 쉽게 노쳤던 부분을 적어보려고 한다.

 

function str(param) {
    let res = 0;
    for (let i = 0; i < param.legnth; i++) {
        res += param[i];
    }
}

console.log(str(12345));

 

보통이라면 이렇게 str이 가진 값들을 다 더하는 반복문을 돌렸을텐데, 콘솔을 보면 "undefined" 가 나오는 것을 볼 수 있다.

이러한 이유가 나오는데 까지 30~50분정도 걸렸던것 같다. 결국엔 알고나면 당연한 것들인데...알아채기 전까지의 과정이 고통스러웠던것 같다.  위와 같이 undefined가 나온 이유는 보통 길이를 재려고 한다면 문자열의 길이에 접근을 해야하는데 위의 코드에는 number의 값에 길이를 재려고 하는것을 볼 수 있다. 이러니 당연히 콘솔도 안나왔었고 undefined가 나올 수 밖에 없었다.

해결하고 나니 너무 당연한 이유였던 것이다...그러면 어떻게 해야하나? 

길이를 재려고 하는 부분을 string 으로 바꾼 뒤 길이를 구하고 목적에 맞는 로직을 작성하면 된다.

현재 내가 원하는 것은 str의 가지고 있는 정수의 값들을 다 더한  값이니깐 결과는 아래와 같다.

function str(param) {
    let res = 0;
    for (let i = 0; i < String(param).length; i++) { // param을 String으로 감싸준다.
        console.log(String(param)[i]); // 문자열로 들어왔는지 확인을 한다.
        res += Number(String(param)[i]); // 그리고 res변수가 number이니, string을 number로 바꿔준다.
    }
    return res;
}

console.log(str(12345));

 

이렇게 하면 원하는 값인 "15" 라는 정수의 값이 반환된다.

기억해야할 것은 길이는 정수에는 사용할 수 없고 문자열에만 가능하다는 것! 

'리액트' 카테고리의 다른 글

Promise에 대해  (1) 2024.12.09
Math.min / max  (0) 2024.12.08
공부일지 : 배열 함수(map,filter,some,every,find)  (0) 2024.12.07
for문 이해하기  (1) 2024.11.26
React find Method  (0) 2024.11.25