>  Q&A  >  본문

javascript - js의 정의되지 않은 배열이 통과되지 않는 이유는 무엇입니까?

문제 설명이 포괄적이지 않습니다

내 문제는 내 배열이 다음과 같이 정의될 때 발생합니다.

으아아아

여기서 자동으로 생성된 undefine과 내가 정의한 것 사이에 차이점이 있나요?

내장된 순회 기능을 사용할 때 왜 순회할 수 없나요?

으아아아

PHP中文网PHP中文网2662일 전919

모든 응답(4)나는 대답할 것이다

  • 某草草

    某草草2017-07-05 10:52:19

    귀하가 정의한 것은 희소 배열(길이가 배열 요소 수보다 큰 배열)이기 때문에 in를 사용하여 해당 배열 요소가 존재하는지 확인할 수 있습니다.

    으아악

    그리고 forEach은 원래 인덱스가 존재하는 요소만 순회합니다.

    회신하다
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-07-05 10:52:19

    여기서 자동으로 생성된 undefine과 제가 정의한 것 사이에 차이점이 있나요?

    이것은 배열의 함정입니다. 정의되지 않은 것은 그렇게 정의되지 않은 것이 아닙니다. 자동으로 생성된 슬롯은 "빈 슬롯"이라고 하며 크롬에서는 이를 정의되지 않은 것으로 표시합니다. 실제 undefound가 하나씩 출력되고, 빈 슬롯에는 "undefine × 7"이라는 단어가 출력되는 것도 볼 수 있습니다.

    forEach, 지도 등은 빈 슬롯을 건너뜁니다. 솔루션을 참고해주세요

    으아악

    회신하다
    0
  • 淡淡烟草味

    淡淡烟草味2017-07-05 10:52:19

    forEach는 이렇게 작성되기 때문에 내장된 forEach는 정의되지 않은 경우에도 계속됩니다.
    건너뛰지 않는 버전을 직접 작성할 수 있습니다

    회신하다
    0
  • 漂亮男人

    漂亮男人2017-07-05 10:52:19

    이 문제를 다른 각도에서 생각해 볼 수 있습니다.
    var a = [1,2,3,4]
    delete a[0]
    console.log(a)//[undefine × 1, 2, 3, 4]
    a.length//4
    a.forEach(it=>console.log(it))// 2 3 4
    질문으로 돌아가서, forEach가 캡슐화되면 이 "정의되지 않음"은 건너뛰고 다시 작성할 수 있습니다. 이 방법을 사용해보세요. 값이 어떻든 정상적으로 인쇄가 가능합니다

    회신하다
    0
  • 취소회신하다