(Soy un principiante, de hecho, comencé hace unos días, así que lo siento de antemano si esto parece complicado. Estoy tratando de hacer lo mejor que puedo para explicar)
Así que digamos que tengo una función que espera argumentos como este:
getItems([items],getItemsFrom){ }Además, digamos que tengo una cantidad fija de elementos que necesito obtener y una matriz construida a partir de elemento1, elemento2... elementoN, como
const ITEMS_TO_GET = 5; const ITEMS_ARRAY = Array.from(items);Ahora necesito implementar un código que haga esto:
let itemSum = 0; if(ITEM_ARRAY.length > 5){ // Some fancy code } else if (ITEM_ARRAY > 0) { for(let i = 0; i < ITEM_ARRAY.length; i++){ itemSum += ITEM_ARRAY[i]; } return itemSum; } else {return}(Todo el código que ve aquí no es código real del proyecto. Estoy en mi teléfono).
si entiendo lo que quiere, el mayor problema es que no quiere tener solo 5 elementos en su matriz, quiere tener al menos getItemsFrom * 5 + 5. segundo, intente reorganizar su prueba: no necesita hacer todo eso si la función solicita 0 elementos.
aquí un código para ti
const ITEMS_TO_GET = 5; var ITEMS_ARRAY = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; function getItems(array,getItemsFrom){ if(getItemsFrom <= 0){ console.log("getItemsFrom is inferior 0. abording"); return; } if(array.length < getItemsFrom * ITEMS_TO_GET){ console.log("no enough item in array"); console.log("adding some to make up the minimum ("+(getItemsFrom * ITEMS_TO_GET + ITEMS_TO_GET)+")"); var nbToAdd = (getItemsFrom * ITEMS_TO_GET + ITEMS_TO_GET)-array.length; for(var i = 0; i < nbToAdd;i++){ array.push(i); } } var begin = getItemsFrom * ITEMS_TO_GET; var end = getItemsFrom * ITEMS_TO_GET+ITEMS_TO_GET; var sliced = array.slice(begin ,end); console.log("data from "+begin+" to "+end + " : " +sliced); console.log("sum : " + sliced.reduce((a, b) => a + b, 0)); } getItems(ITEMS_ARRAY,4);