객체안에 객체값 더하기
2020. 6. 9. 16:12ㆍJS
"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
반응형
'JS' 카테고리의 다른 글
JS Cookie 생성시 시간, 경로 설정 (0) | 2021.01.08 |
---|---|
JavaScript 모든 공백 제거 (0) | 2020.11.20 |
sort() 함수 사용법 (0) | 2020.10.08 |
JavaScript 배열안에 객체를 가져오는법 (0) | 2020.07.30 |
String을 Number타입으로, Number을 String타입으로 (0) | 2020.06.10 |