강의로 돌아가기
김겸

잘 이해가 되지않습니다.

var obj = {
name: object,
age: 10,
weight: 5
}
var sum = 0;
var s = object.key(obj);
for ( s in obj ){
if( typeof( s ) == number ){
sum = sum + obj[s];
}
}
console.log(sum);
여기까지 작성을해봤는데 대체 어디부터 잘못된것인지 종합적으로 알고 싶습니다

작성중인 코드―forInTest
1
2
3
4
5
6
7
8
9
10
11
12
13
var obj = {
    name: "object",
    age: 10,
    weight: 5
}
var sum = 0;
var s = object.key(obj);
for ( s in obj ){
    if( typeof( s ) == "number" ){
        sum = sum + obj[s];
    }
}
console.log(sum);
1 개의 답변
JHyun

먼저, 7번라인의 object.key 구문이 틀렸습니다.
사실 굳이 keys메소드로 배열화하지 않아도 이문제를 수행할 수 있는데요.
일단 문제점을 말씀드리자면,

  1. object.key-> Object.keys로 실행해야합니다.
  2. 1번처럼 실행하게 되면 s 변수에 obj의 값들이 string화되어 배열에 들어가게 됩니다. 그런데 for in 문 안의 if문에서 number를 찾는데, number가 없으니 sum은 0이 되네요.

즉, obj를 배열화하지 않고 스크립트를 작성해보시기 바랍니다.
도움이 되셨으면 해서 분석후 올려봅니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.