과거 프로그래밍 자료들/프로젝트

[javascript] 객체의 값 반복문 사용, 반복되는 코드 함수로 통일

평부 2022. 8. 10. 18:08

 

* 객체의 길이를 구하기 위해 for문을 썼다가 중복되는 부분이 많아 함수로 합치는 과정에서 반복문 for ...in을 알게 됨

* 객체의 경우 index가 있으므로 for ..in 사용이 효과적

 

- 참고 : http://daplus.net/javascript-javascript-%EA%B0%9D%EC%B2%B4%EB%A5%BC-%EB%B0%98%EB%B3%B5%ED%95%98%EA%B1%B0%EB%82%98-%EC%97%B4%EA%B1%B0%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95/

 

[javascript] JavaScript 객체를 반복하거나 열거하는 방법 - 리뷰나라

다음과 같은 JavaScript 객체가 있습니다. var p = { "p1": "value1", "p2": "value2", "p3": "value3" }; 지금은 모든을 통해 루프를 원하는 p요소 ( p1, p2, p3…) 그리고 자신의 키와 값을 얻는다. 어떻게해야합니까?

daplus.net

 

기존 코드 

 const res = await axios(config);
 const wordDataSet = res.data.result;
 
 const easyCount = Object.keys(wordDataSet.easy).length;
 const middleCount = Object.keys(wordDataSet.middle).length;
 const advanceCount = Object.keys(wordDataSet.advance).length;

 let checkedCount = 0;

    for (let i = 0; i < easyCount; i++) {
      const easyCheckedCount = wordDataSet.easy[i].status;
      console.log(easyCheckedCount);
      if (easyCheckedCount === "C") {
        checkedCount += 1;
      }
    }

    for (let i = 0; i < middleCount; i++) {
      const middleCheckedCount = wordDataSet.middle[i].status;
      console.log(middleCheckedCount);
      if (middleCheckedCount === "C") {
        checkedCount += 1;
      }
    }

    for (let i = 0; i < advanceCount; i++) {
      const advanceCheckedCount = wordDataSet.advance[i].status;
      console.log(advanceCheckedCount);
      if (advanceCheckedCount === "C") {
        checkedCount += 1;
      }
    }
    console.log(checkedCount);

 

고친 코드

const wordDataSet = res.data.result;

    const easyArray = wordDataSet.easy;
    const middleArray = wordDataSet.middle;
    const advanceArray = wordDataSet.advance;

    const easyCount = easyArray.length;
    const middleCount = middleArray.length;
    const advanceCount = advanceArray.length;

    let checkedCount = 0;

    function plusCount($typeCheckedStatus) {
      if ($typeCheckedStatus === "C") {
        checkedCount += 1;
      } else if ($typeCheckedStatus === "A") {
        checkedCount = checkedCount;
      }
    }

    for (const index in easyArray) {
      console.log(index);
      const easyCheckedStatus = easyArray[index].status;
      plusCount(easyCheckedStatus);
    }

    for (const index in middleArray) {
      const middleCheckedStatus = middleArray[index].status;
      plusCount(middleCheckedStatus);
    }

    for (const index in advanceArray) {
      const advanceCheckedStatus = advanceArray[index].status;
      plusCount(advanceCheckedStatus);
    }