Podczas korzystania z tego konstruktu:
for (var name in namesArray) {
wartość name
będzie indeks w tablicy (nazwa własności). Jeśli chcesz rzeczywistej wartości w tablicy, trzeba użyć tej nazwy właściciela/indeksu, aby uzyskać wartość:
document.write(namesArray[name]);
Oczywiście, tak naprawdę nie powinny iteracyjne tablice że sposób, w pierwszej kolejności, ponieważ iteruje wszystkie przeliczalne właściwości obiektu tablicy (potencjalnie włączając elementy nieszablonowe), jak widać w this example. Zamiast tego należy użyć tradycyjnego for
pętli jak w tym przykładzie kodu, który następuje:
var namesArray = [];
do {
var names = prompt("Enter a name: ");
namesArray.push(names);
} while (names != "")
namesArray.sort();
for (var i = 0; i < namesArray.length; i++) {
document.write(namesArray[i]);
}
Inne opcje dla iteracja tablicę:
namesArray.forEach(function(value) {
document.write(value)
});
Albo w ES6, można użyć for/of syntax co faktycznie działa w taki sposób, w jaki próbujesz użyć dla/w:
for (let value of namesArray) {
document.write(value);
}
Możesz również chcieć zrozumieć, że użycie dokumentu document.write()
po przeanalizowaniu i załadowaniu dokumentu spowoduje, że przeglądarka usunie bieżący dokument i rozpocznie nowe. Nie znam szerszego kontekstu, w którym ten kod pasuje, ale może to powodować problemy.
To działałoby, gdyby była pętlą 'for-of':' for (niech nazwa namesArray) '. – Xufox