객체안에 객체값 더하기

2020. 6. 9. 16:12JS

"table" :{
    "userId": "5ede0bbd1dcbcf2974858154",
    "sumPoint": 20,
    "study": {
        "1": {
            "point": 10
        },
        "2": {
            "point": 20
        },
        "3": {
            "point": 30
        },
        "4": {
            "point": 10
        },
        "5": null,
        "6": null,
        "7": null,
    },
    "__v": 0

}

이렇게 "table"객체 안에 null도 삽입되어있고 1,2,3,4 객체안에 point의 합산을 구할때 

for문으로 

for (var key in table.study) {
  console.log(table.study[key].point)
}

이렇게 넣으면 log 창에는 

10

20

30

10

이렇게 뜨지만 

TypeError: Cannot read property 'point' of null 이런 오류가 뜬다.

null인 객체들이 포함이 되어있어서 그러한데 이부분을 if문으로 걸러 내주어야 한다

 

const studyObj = body.table
  let sum = 0

  const study = Object.values(studyObj)
  for (const o in study) {
    if (study[o] !== null) {
      if (study[o].point !== null) {
        sum += study[o].point
      }
    }
  }
  console.log(sum)

sum을 초기화 하고 studyObj을 배열로 만든 다음 for문을 돌린다

그리고 null값을 걸러내기 위해 if문을 사용하여 값을 더한다 

한번만 걸러내도 똑같이 TypeError: Cannot read property 'point' of null 오류가 발생하는데

.point를 추가해서 한번더 걸러 주면 된다.

 

70이라고 뜬다

 

 

왜 한번거 걸러야 하는지는 모르겠네요 아시는분있으면 댓글 남겨주세요 ㅠ

728x90
반응형