joejoejoe
30
2020-07-04 13:02:56
7
373

JavaScript 배열 순회에 대한 질문입니다.



let progresses = [93,30,55];    
let speeds = [1,30,5];  

    
for(let i in speeds) {
    console.log(progresses[i]); // [90, 30, 55]
}

for in 을 사용하여 speeds 배열을 순회하고 있는데 왜 progresses 배열의 값을 로그 할 수 있나요?

progresses.forEach((item, i) => {
    console.log(speeds[item]); // undefined
    console.log(speeds[i]); // [1,30, 5]
});

여기도 마찬가지로 processes 배열을 순회하고 있지만, 어떻게 speeds 배열을 값을 로그 할 수 있나요?

0
  • 답변 7

  • 개발장
    2020-07-04 13:53:17

    console.log(item)해야 값이 나옵니다.

  • 빵야빵야
    49
    2020-07-04 14:16:45

    forEach 는 아시는 바와 같이 해당 배열을 순회하는 것 뿐입니다.

    함수 안에 'speeds 배열, progresses 배열에 있는 값을 로그로 찍어서 보여줘라' 라는 명령을 내렸기 때문에 그걸 실행한 거죠.


  • joejoejoe
    30
    2020-07-04 14:40:17

    빵야빵야님, 제 질문은 processes 배열을 순회하고 speeds 배열은 순회하지 않고 있는 상황에서 console.log(speeds[i]) 왜 가능한지가 궁금한점입니다. 

  • 개발장
    2020-07-04 14:42:39
    i는 인덱스 입니다. 증감하죠.
  • 빵야빵야
    49
    2020-07-04 14:47:36

    흠... 배열에 접근할 때 인덱스로 접근하시는 건 알고 계시죠??

    그렇다면 답은 간단할 텐데요.

    progresses.forEach((item, i) => {
        console.log('i의 값', i)
        console.log(speeds[i]);
    });

    이렇게 하면 당연히.. 나오지 않을까요?? 

    MDN에서 forEach를 잘 보시면 인자 3개를 받을 거예요. 각각 어떤 역할인지 보시면 이해가 확실히 되실 겁니다.

  • joejoejoe
    30
    2020-07-04 14:52:34


    for(let i = 0; i < progresses.length; i++) {
    
        console.log(progresses[i]); 1번
    
        console.log(speeds[i]); // 2번
    
    }

    아 제가 이해를 잘 못하고 있었던거 같네요. 그러니깐 배열 순회를 한다고 해서 꼭 특정배열만 순회를 하는게 아니라는 말씀이신거죠? 2번이 불가능하다고 생각했었는데, 이제 보니 배열 순회를 index로 접근하기 때문에 speeds[i] 출력이 된다는 말이네요 . 제가 이해한게 맞겟죠? 감사합니다!

  • 빵야빵야
    49
    2020-07-04 14:56:12

     네, 맞아요.  'Scope' 라는 개념도 공부하시면 좋습니다

  • 로그인을 하시면 답변을 등록할 수 있습니다.