forLoop

2019-01-14

기존에 배열같은 경우는 반복문을 사용할 때 용도에 따라서 forEachmap을 사용했었다.
그런데 Object같은 경우는 반복문을 어떻게 사용해야하는지 순간 까먹었었다.
그래서 반복문에 대해서 정리가 필요했다.

  1. forEach
    forEach문 밖으로 리턴값을 받지 못한다. 사용할때는 for문안에서 어떤한 작업을 하고 싶을 때 사용한다.

    1
    2
    3
    let arr = [1,2,3];
    let b = arr.forEach((v) => { return v;})
    console.log("b", b); //undefiend
  2. map
    새로운 배열을 리턴한다.
    성능면에서도 map이 더 우수하다. map사용을 권장하는 분위기이다.

    1
    2
    3
    let arr = [1,2,3];
    let b = arr.forEach((v) => { return v + 1;})
    console.log("b", b); //[2,3,4]
  3. for in
    객체의 속성들을 반복하여 작업수행 가능하다. key값에 접근할 수만있다.
    여기서 hasOwnProperty로 각각의 object값들을 빼도 된다.
    hasOwnProperty는 자신의 고유 속성, 즉 상속받은 프로퍼티가 아닌 순수 자신의 속성인 경우에만 값을 true로 반환한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var obj = {
    a: 1,
    b: 2,
    c: 3
    };

    for (let i in obj) {
    console.log(i); // a, b, c
    console.log(obj[i]); //1,2,3
    if (obj.hasOwnProperty(i)) {
    console.log(obj[i])
    }
    }
  4. for of
    ES6에 추가된 반복구문이다. 컬렉션 객체가 [Symbol.iterator]속성을 가지고 있어야만한다.

    1
    2
    3
    4
    5
    let iterable = [10, 20, 30];

    for (let value of iterable) {
    console.log(value); // 10, 20, 30
    }

    객체를 반복문 돌리는 방법

    1
    2
    3
    4
    5
    var obj = { first: "John", last: "Doe" };

    Object.keys(obj).forEach(function(key) {
    console.log(key, obj[key]);
    });
1
2
3
for (const key of Object.keys(obj)) {
console.log(key, obj[key]);
}
1
2
3
Object.entries(obj).forEach(
([key, value]) => console.log(key, value)
);