본문 바로가기
My Wiki (CodesStates)/JS,Node

(2-5) JS/Node 배열, 객체 - 객체의 반복

by Esoolgnah 2021. 8. 1.
728x90

 

for in 구문 :  객체의 모든 key에 접근할 수 있다.

function allKeys(obj) {
  for (let key in obj) {
    console.log(key);
  }
}

[코드] for in 구문을 통해 객체의 모든 key에 접근하고 출력할 수 있다.

 

여기서 key 는 변수기 때문에 꼭 key 라고 적어주지 않고 props 혹은 아무거나 적어주어도 된다. 

 

 

문제

두개의 객체를 입력받아 두 번째 객체의 속성들을 첫 번째 객체에 추가해야 한다. 아래의 입출력 예시를 보고 정답을 코드로 옮겨보자.

const obj1 = { a: 1, b: 2 };
const obj2 = { b: 4, c: 3 };

// 보기의 코드를 여기에 입력하면 아래의 결과가 나와야 한다.
extend(obj1, obj2);

console.log(obj1); // --> {a; 1, b: 2, c: 3}
console.log(obj2); // --> {b: 4, c: 3}

 

 

정답

두 개의 객체를 입력받아 두 번째 객체의 속성들을 첫 번째 객체에 추가한다. 여기서 두 가지 조건이 생긴다.
obj2에는 있는데 obj1에 없는 key가 있다면 obj2의 key의 value를 obj1의 key의 value에 할당한다.
만약에 obj1 과 obj2 에 중복으로 있는 key 라면 key를 변경하지 않고 유지한다.

function extend(obj1, obj2) {
  for (let key in obj2) {
    if (!(key in obj1)) {
      obj1[key] = obj2[key];
    }
  }
}j

 

 

주의사항

아래의 코드는 배열의 요소에 순서대로 반복적으로 접근하기 위한 방법이나 객체에서는 사용하지 않는 것이 좋다. 객체의 key가 0, 1, 2, 3... 인 경우에만 활용할 수 있다.

function allKeys(obj) {
  for (let key = 0; key < obj.length; key++) {
    console.log(key)
  }
}

 

 

 

 

 

반응형

댓글