ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • split,map,Array,fill
    카테고리 없음 2023. 5. 11. 11:39
    const getStrikes = (number, answer) => {
        //스트라이크 카운트는 몇개?
        let strike = 0
        const nums = number.split('')
    
        nums.map((digit, index) => {
          if (digit === answer[index]) {
            strike++
          }
        })
    
        return strike
      }

    split() 메서드

    문자열을 분할하는 기능을 합니다. 이 메서드를 이용하면 주어진 문자열을

    구분자로 나누어서 새로운 배열을 만들 수 있습니다.

    위의 코드에서 number 문자열을 split() 메서드로 분할하여 nums 배열에 저장합니다. split() 메서드에는 구분자로 사용할 문자열을 전달하는데, 여기서는 빈 문자열 ''을 구분자로 사용하여 각 자릿수를 분리합니다.

    map()메서드

    배열의 모든 요소를 하나씩 순회하며, 각 요소를 이용하여 새로운 배열을 만드는 기능을 합니다.

    콜백 함수는 이 과정에서 각 요소와 해당 인덱스를 매개변수로 받으며,

    이들을 이용하여 각 요소에 대해 처리를 수행합니다.

    위의 코드에서 nums.map()은 nums 배열의 각 요소에 대해 콜백 함수를 호출합니다. 콜백 함수는 각 자릿수 digit과 해당 인덱스 index를 매개변수로 받으며, digit과 answer[index]를 비교하여 같으면 strike 변수를 증가시킵니다. 이렇게 각 자릿수를 순회하면서 스트라이크를 계산하는 것이 getStrikes() 함수의 기능입니다.

    const getBalls = (number, answer) => {
        //볼 카운트는 몇개?
        let ball = 0
        const nums = number.split('')
        const gameLimit = Array(limit).fill(false)
    
        answer.split('').map((num) => {
          gameLimit[num] = true
        })
    
        nums.map((num, index) => {
          if (answer[index] !== num && !!gameLimit[num]) {
            ball++
          }
        })
    
        return ball
      }

    Array() 메서드

    배열 객체를 생성하는 생성자 함수

    fill() 메서드

    배열의 모든 요소를 정해진 값으로 초기화

    따라서 Array(limit).fill(false)는 길이가 limit인 배열을 생성하고, 모든 요소를 false로 초기화한 배열을 반환합니다.
    이 코드에서는 gameLimit 배열을 false로 초기화한 상태로 생성하여, 이후에 answer 배열에서
    각 숫자들이 존재하는지를 확인할 때 사용합니다.

    ->

     answer.split('')는 answer 배열의 각 요소를 문자열로 변환한 후, 이 문자열을 요소로 갖는 배열을 반환합니다.

    이렇게 변환된 문자열 배열에 map() 메서드를 적용하여,

    각 요소를 하나씩 꺼내서 gameLimit 배열의 인덱스로 사용합니다.

     

    예를 들어, answer 배열이 [1, 2, 3, 4]이고, limit 값이 9인 경우,

    gameLimit 배열은 초기값이 false로 설정된 길이가 9인 배열입니다.

    answer.split('').map((num) => { gameLimit[num] = true })

    answer 배열의 각 요소를 하나씩 꺼내어 gameLimit[num] = true를 실행합니다.

     

    따라서 gameLimit 배열은 [false, true, true, true, true, false, false, false, false]와 같은 값을 갖게 됩니다.

    이렇게 생성된 gameLimit 배열을 이용하여, 게임에서 사용 가능한 숫자인지 여부를 확인할 수 있습니다.

     

    즉, gameLimit['1'] = true, gameLimit['2'] = true, gameLimit['3'] = true, gameLimit['4'] = true와 같은 형태로 gameLimit 배열이 갱신되는 것입니다.

     

    따라서, map((num) => {...})에서 num은 배열의 요소를 의미하며,

    이 코드에서는 num이 문자열 형태의 각 숫자를 의미합니다.

    따라서 { gameLimit[num] = true }gameLimit 배열의 num 인덱스에 대해 true 값을 할당하는 역할을 합니다.

     

     

    댓글

Designed by Tistory.