Bueno, sé que mi pregunta es muy difícil. Pero quiero saber cosas?
Supongamos que tengo un elemento de matriz.
const array = [ "AEDAUD", "AEDCAD", "AEDCHF", "AEDEUR", "AEDGBP", "AEDINR", "AEDJPY", "AEDNOK", "AEDNZD", "AEDPKR", "AEDSAR", "AEDSEK", "AEDZAR", "ANG", "ARSBRL", "ARSEUR", "ARSGBP" ]Necesito aquí en Función que puede ejecutar solo 10 elementos cada vez. Cuando ejecuto la función por primera vez, me muestra los primeros 10 elementos. Luego, si vuelvo a ejecutar, me muestra el elemento de descanso.
Supongamos que esta es la función
const runElement = () => { console.log(element) }Si ejecuto esta función por primera vez, me muestra los primeros 10 elementos de la matriz.
"AEDAUD" "AEDCAD" "AEDCHF" "AEDEUR" "AEDGBP" "AEDINR" "AEDJPY" "AEDNOK" "AEDNZD" "AEDPKR"Entonces, si vuelvo a ejecutar esa función, debería mostrarme el resto del elemento:
"AEDSAR" "AEDSEK" "AEDZAR" "ANG" "ARSBRL" "ARSEUR" "ARSGBP"Si vuelvo a ejecutar la función, debería ir de nuevo al primer elemento 10. En eso debe correr para siempre.
¿Es esto posible en javascript?
Tal vez le interese usar un generador: proporciónele la matriz y el tamaño del fragmento, y déjelo recorrer felizmente la matriz para siempre mientras obtiene los resultados.
El iterador se puede utilizar para obtener tantos resultados como sea necesario:
function* pullValues(arr, chunkSize) { let i = 0; while (true) { yield arr.slice(i, i += chunkSize); if (i >= arr.length) i = 0; } } // demo const array = [ "AEDAUD", "AEDCAD", "AEDCHF", "AEDEUR", "AEDGBP", "AEDINR", "AEDJPY", "AEDNOK", "AEDNZD", "AEDPKR", "AEDSAR", "AEDSEK", "AEDZAR", "ANG", "ARSBRL", "ARSEUR", "ARSGBP" ]; let it = pullValues(array, 10); console.log(...it.next().value); console.log(...it.next().value); console.log(...it.next().value); console.log(...it.next().value); console.log(...it.next().value); console.log(...it.next().value); console.log(...it.next().value); //....Puede usar una variable para almacenar una bandera y la función puede hacer referencia a esta variable para generar una salida diferente.
const array = [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", ]; let isShowFirstTenItem = true; const show = () => { let output; if (isShowFirstTenItem) { output = array.slice(0, 10); } else { output = array.slice(10, -1); } isShowFirstTenItem = !isShowFirstTenItem; console.log(output); }; show(); show(); show();Puedes hacer algo como esto. Aquí el tracker se usa para realizar un seguimiento de los elementos que ya se muestran. Si el rastreador es 0, todavía no se muestra nada, si es 1 significa que los primeros diez ya se muestran. For loop solo muestra 10 elementos una vez.
const array = [ "AEDAUD", "AEDCAD", "AEDCHF", "AEDEUR", "AEDGBP", "AEDINR", "AEDJPY", "AEDNOK", "AEDNZD", "AEDPKR", "AEDSAR", "AEDSEK", "AEDZAR", "ANG", "ARSBRL", "ARSEUR", "ARSGBP" ] let tracker = 0; const display = () => { for(let i = tracker*10; i<10*tracker + 10 ; i++){ if(!array[i]) break; console.log(array[i]) } if(tracker >= array.length){ tracker = 0; } else { tracker = tracker+1 } } display() display()