検索

ホームページ  >  に質問  >  本文

javascript - js の未定義の配列が走査されないのはなぜですか?

問題の説明が包括的ではありません

私の問題は、配列が次のように定義されている場合です:

リーリー

ここで自動的に生成された未定義と私が定義したものに違いはありますか?

組み込みのトラバーサルを使用すると、それらをトラバースできないのはなぜですか?

リーリー
PHP中文网PHP中文网2703日前957

全員に返信(4)返信します

  • 某草草

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

    定義したものはスパース配列 (スパース配列、配列の長さが配列要素の数より大きい) であるため、 in を使用してその配列要素が存在するかどうかを検出できます。 リーリー

    そして

    は元のインデックスが存在する要素のみを走査しますforEach.

    返事
    0
  • 过去多啦不再A梦

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

    ここで自動生成された未定義と私が定義したものに違いはありますか?

    これは配列の罠であり、この未定義は未定義ではありません。自動的に生成されたスロットは「空のスロット」と呼ばれ、Chrome では単に未定義として表示されます。また、実際の未定義が 1 つずつ出力され、空のスロットには「未定義 × 7」という単語が出力されることがわかります。

    forEach、マップなどは空のスロットをスキップします。解決策を参考にしてください

    リーリー

    返事
    0
  • 淡淡烟草味

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

    forEach はこのように書かれているため、組み込みの forEach は unknown に遭遇しても継続します
    スキップしないバージョンを自分で書くことができます

    返事
    0
  • 漂亮男人

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

    この問題を別の角度から考えることもできます:
    var a = [1,2,3,4]
    delete a[0]
    console.log(a)//[未定義 × 1, 2, 3, 4]
    a.length//4
    a.forEach(it=>console.log(it))// 2 3 4
    質問に戻りますが、forEach がカプセル化されると、この「未定義」はスキップされ、書き換えることができますこの方法を試してみてください。値が何であっても、正常に印刷できるはずです

    返事
    0
  • キャンセル返事