인프런 커뮤니티 질문&답변

김서연님의 프로필 이미지
김서연

작성한 질문수

[코드캠프] 훈훈한 Javascript

반복문을 활용한 날짜 데이터 리팩토링

반복문을 활용한 날짜 데이터 리팩토링

해결된 질문

작성

·

207

0

강의 8:18 부분에서 강사님 코드 49번째 줄 말고 이렇게 작성하면 왜 안되나요?

console.log(documentobj[docKeys][i]);

답변 2

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! 서연님!

documentObj[docKeys[i]]documentObj[docKeys][i] 차이가 궁금하셨군요!

조금 이해하기 쉽도록 이름을 아래처럼 변경해 볼게요!

프로필[취미[0]] vs 프로필[취미][0]

위 둘은 실제로 비슷해 보이지만, 아주아주 다르답니다!

 

위 둘을 이해하기 위해서, 객체와 배열에 대해서 조금만 더 자세히 알아보고 시작할게요!

// 배열
const 이름 = ["철수", "영희", "훈이"]
이름[0] // 철수
이름[1] // 영희
이름[2] // 훈이

// 객체
const 프로필 = {
   이름: "철수",
   나이: 12
}
프로필.이름 // 철수
프로필.나이 // 12

 

자! 여기서, 객체는 조금 특이한 성질을 가지고 있는데요!

아래와 같은 방법으로도 사용 가능하답니다!

// 객체
const aaa = "이름"
const 프로필 = {
   이름: "철수",
   나이: 12
}
프로필.이름 // 철수
프로필[aaa] // aaa는 변수이므로 다음과 같이 바뀌어요! => 프로필["이름"] => 프로필.이름 => 철수

여기서 대괄호 []가 나오기 때문에 배열로 많이들 헷갈려 하시지만, 이것은 객체에서 접근하는 데이터가 변수안에 들어가 있을 때 보통 사용한답니다!

그렇다면, 프로필.aaa는 안될까요?

프로필.aaa라고 사용하시게 되면, aaa는 변수가 아니라 키값을 의미하겠죠?! 따라서 안됩니다!

const aaa = "이름"
const 프로필 = {
   이름: "철수",
   나이: 12,
   aaa: "바나나"
}
프로필[aaa] // 프로필["이름"] => 프로필.이름 => 철수
프로필.aaa // 바나나

 

위의 원리를 이해하셨다면 실제 질문으로 돌아가볼까요?!

프로필[취미[0]] vs 프로필[취미][0]

const 취미 = ["수영", "축구", "농구"]
const 프로필 = {
   수영: "1등",
   축구: "2등",
   농구: "3등"
}

1) 프로필[취미[0]] // => 프로필["수영"] => 프로필.수영 => "1등"
2) 프로필[취미][0] // => 프로필[["수영", "축구", "농구"]][0] => 프로필에서 수영, 축구, 농구 중 뭘 선택하라는 거지...? ** 에러발생 **
따라서, 2번의 경우, 에러가 발생하게 돼요!

 

 

0

안녕하세요 김서연 님, 인프런 AI 인턴이에요.
제공해주신 코드를 살펴보았을 때, documentobjdocKeys가 정확히 어떤 변수를 가리키는지 확인해야합니다. 또한, 해당 코드가 어떤 목적을 가지고 사용되는지 이해할 필요가 있습니다. 코드 전체를 파악한 후에 보다 정확한 답변을 드릴 수 있습니다. 감사합니다!

김서연님의 프로필 이미지
김서연

작성한 질문수

질문하기