javascript - Pourquoi le tableau non défini dans JS n'est-il pas traversé?
PHP中文网
PHP中文网 2017-07-05 10:50:19
0
4
970

La description du problème n'est pas exhaustive

Mon problème est lorsque mon tableau est défini comme suit :

let a = [undefined, undefined]

a[9] = 1

console.log(a)                //[undefined, undefined, undefined × 7, 1]

Y a-t-il une différence entre l'indéfini généré automatiquement ici et celui que j'ai défini

 ?

Pourquoi ne puis-je pas les parcourir lorsque j'utilise la traversée intégrée ?

a.forEach(it => console.log(it))    // 也只会有三个结果
PHP中文网
PHP中文网

认证0级讲师

répondre à tous(4)
某草草

Parce que ce que vous définissez est un tableau clairsemé (tableau clairsemé, la longueur du tableau est supérieure au nombre d'éléments du tableau, vous pouvez utiliser in pour détecter si ses éléments du tableau existent :

).
'0' in a  // true,索引存在.
'1' in a  // true
'2' in a  // false,索引不存在
'9' in a  // true

Et forEach ne traversera que les éléments où l'index d'origine existe.

过去多啦不再A梦

Y a-t-il une différence entre l'indéfini généré automatiquement ici et celui que j'ai défini ?

C'est un piège des tableaux, cet indéfini n'est pas si indéfini que ça. Ceux générés automatiquement sont appelés "emplacements vides", et Chrome les affiche simplement comme non définis. Vous pouvez également voir que le véritable indéfini est affiché un par un et que les emplacements vides affichent les mots « indéfini × 7 ».

forEach, la carte et autres ignoreront les emplacements vides. Veuillez vous référer à la solution

console.log(Array.from(a))
淡淡烟草味

Parce que forEach est écrit comme ceci, le forEach intégré continuera lorsqu'il rencontrera undefined
Vous pouvez écrire vous-même une version non sautée

漂亮男人

Vous pouvez considérer ce problème sous un autre angle :
var a = [1,2,3,4]
delete a[0]
console.log(a)//[undefined × 1, 2, 3, 4]
a.length//4
a.forEach(it=>console.log(it))// 2 3 4
Retour à la question, lorsque forEach est encapsulé, ce "indéfini" sera ignoré, vous pouvez réécrire Essayez cette méthode, quelle que soit la valeur, elle devrait pouvoir être imprimée normalement

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal