Ho un array sparso (indici non sono consecutivi) come questo:Javascript scorrendo matrice sparsa
var testArray = { 0: "value1", 5: "value2", 10: "value3", 15: "value4" };
Vorrei semplicemente per scorrere ogni elemento, fare alcune cose, ed essere in grado di rompere sotto un determinate condizioni.
Sono abbastanza nuovo per Javascript e non ho trovato un modo corretto per farlo. Ecco cosa ho provato:
Built-in "for..in". Sembra che questo sia not the correct way to iterate through an array
forEach da ECMASCRIPT5. Questo esegue correttamente l'iterazione, ma non posso interrompere il ciclo.
_.each() da Underscore.js. Stesso risultato del # 2.
$.each() da JQuery. Con questo posso rompere restituendo false, ma non scorrerà correttamente. Per l'esempio sopra, invece di iterare a 0, 5, 10, 15, itererà a 0,1,2,3,4,5,6 ... che ovviamente non è quello che mi aspetto.
Quindi la mia domanda è: C'è un modo semplice per iterare una matrice sparsa con la possibilità di rompersi durante il ciclo in Javascript o sarebbe meglio usare un'altra struttura di dati come una tabella hash? Se sì, qualsiasi raccomandazione?
Grazie!
se si guarda attraverso il collegamento fornito nel punto n. 1, il ciclo incorporato per..in è il modo di scorrere le proprietà di un oggetto, che è ciò che si ha – anson
Da quello che ho capito dal collegamento è stato che un problema potrebbe potenzialmente verificarsi se una libreria aggiunge un membro a Array.prototype. Quindi il membro farà parte del ciclo "for..in". – Absolom
Ah ok, il mio esempio non era valido poiché stavo usando un oggetto e non una matrice. Quindi il tuo commento è corretto. – Absolom