Necesito una matriz tridimensional para contar, necesita crecer dinámicamente. Se compone de índice, cadena1 y cadena2.
Esto genera exactamente lo que quiero (para un solo bucle, ya que la matriz está codificada en el índice 0)
var otr_entries=[[0,"",""]]; var otr_entries_count=0; some_working_for_loop() { if(is_important_value_to_save()) { //otr_entries_count=otr_entries_count+1; otr_entries[otr_entries_count][1]=xx[i].previousElementSibling.innerHTML; otr_entries[otr_entries_count][2]=xx[i].innerHTML; window.alert(otr_entries[otr_entries_count][1]); // Expected output window.alert(otr_entries[otr_entries_count][2]); // Expected output } } pero cuando reemplazo otr_entries[0][2] con otr_entries[otr_entries_count][2] el script falla repentinamente, si el conteo no es 0. Eso significa que la matriz no solo está creciendo. Entonces, ¿cómo se puede archivar esto?
var otr_entries=[[0,"",""]]; var otr_entries_count=0; just_some_perfectly_working_for_loop(;;) { if(is_important_value_to_save()) { otr_entries_count=otr_entries_count+1; // Counting up breaks the code otr_entries[otr_entries_count][1]=xx[i].previousElementSibling.innerHTML; otr_entries[otr_entries_count][2]=xx[i].innerHTML; window.alert(otr_entries[otr_entries_count][1]); // No output, script totally stops window.alert(otr_entries[otr_entries_count][2]); // No output, script totally stops } }EDITAR:
Esta es mi solución, gracias a la ayuda de Peters. Funciona perfectamente bien.
var otr_entries=[]; var otr_entries_count=-1; some_working_for_loop() { if(is_important_value_to_save()) { otr_entries_count=otr_entries_count+1; otr_entries.push(otr_entries_count,xx[i].previousElementSibling.innerHTML,xx[i].innerHTML) window.alert(otr_entries[otr_entries_count][1]); // Expected output window.alert(otr_entries[otr_entries_count][2]); // Expected output } }Solo está incrementando el contador antes de agregar un nuevo elemento en la matriz. La solución es mover la línea de incremento del contador al final:
esto funcionó para mí
const otr_entries=[[0,"",""]]; const otr_entries_count=0; for(const entry of otr_entries) { // condition if(true) { otr_entries[otr_entries_count][1]='something'; otr_entries[otr_entries_count][2]='something else' window.alert(otr_entries[otr_entries_count][1]); window.alert(otr_entries[otr_entries_count][2]); otr_entries_count+=1; } }Si en el ciclo está tratando de agregar a la matriz, debe hacer otr_entries.push([count,"something","something2"]).
Además, si está agregando a la matriz, no debería usar esa misma matriz como su control de bucle.