Non utilizzare for...in
per gli array. È preferibile utilizzare il ciclo tradizionale for
in questo caso.
La ragione è che for...in
guarda la matrice come un oggetto, e quindi immobili come indexOf
o length
possono essere inclusi nel ciclo. Il normale ciclo for
riguarda solo i tasti numerici, quindi questo problema viene evitato.
Su una nota a fianco, le proprietà indesiderate possono essere visualizzate quando si itera su oggetti semplici e (come altri hanno notato, le proprietà che si aggiungono al prototipo dell'oggetto verranno visualizzate). È possibile ottenere intorno a questo scrivendo i tuoi for...in
loop in questo modo:
var obj = { ... };
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
var item = obj[prop];
...
}
}
essere chiaro però: si ancora Non si deve usare questo metodo su array.
grazie! Ninja ... – randomor