verb의 값을 키로 사용하고 project의 값을 그 키의 값으로 사용한다면
information[verb] = project; // A
information.developes = 'facebook'; //B
B의 방법은 키와 값이 정해져 있기 때문에 좋은 방법은 아니고, A의 방법은 변수와 할당내용이 변하면 그 값을 자동으로 갖는게 가능해진다.
배열을 반복할 때는 for문을 통해 arr.length를 순회 할 수 있었다.
인덱스를 통해 각 배열요소에 접근할 수 있었기 때문이다.
객체는 length키와 인덱스가 따로 없기 때문에, 다른 두가지의 방법으로 반복문 작성이 가능하다.
objcet.keys 메서드는 객체가 가지고 있는 목록을 배열로 리턴한다.
이제는 반복문 사용이 가능하다.
Object중 O는 대문자이고, 스샷에는 없지만 const keys라는 변수에 저장했다.
키와 값을 출력했다!
ES6부터는 Object.values, Object.entries가 추가되었다.
Object.values는 객체의 값으로 이루어진 배열을 리턴.
Obect.entries는 객체의 키와 값의 쌍으로 이루어진 배열을 리턴. (제일 유용함)
객체를 순회하는 두번째 방법은 for-in문이다.
객체와 배열을 위해 특별히 존재한단다.
그리고 일반적인 배열은 순회할때도 아주 유용하다.
for(let i = 0; i < arr.length; i ++)
{
console.log(i)
console.log(arr[i])
}
배열에 대한 for문 선언시 쓰는 위의 문법은 아주자주 사용하는 문법이다.
이걸 축약한 문법이 바로
for (let i in arr)
{
console.log(i)
console.log(arr[i])
}
위의 문법이다.
i를 0으로 초기화하고, arr.length를 순회하고, i를 1씩 증가 시키는 코드를 생략할 수 있게 만든 문법이다.
for-in문은 인덱스의 값으로 무엇을 할당하고, 반복문이 몇 번 돌아야 할 지를 자바스크립트 엔진 내부에서 자동으로 결정하게 된다.
또한 배열뿐 아니라 객체에서도 작동된다.
for-in문의 인덱스에 해당하는 변수가, 숫자가 아닌 객체의 각각의 키에 해당하는 문자열을 할당받게 해준다.