J'ai un tableau javascript Et je souhaite obtenir les deux éléments suivants en utilisant une fonction et une tranche. Je n'obtiens pas le résultat. Y a-t-il un moyen de contourner ce problème?
var arr = [1,2,3,4,5,6,7,8,9] function get(arr){ for(var i=0; i<arr.length; i++){ console.log(arr.slice(i, 3)) }} // Now when I call the function get(arr) // Funny output [1, 2, 3] [2, 3] [3] [] [] [] [] [] [] [] []
3 Réponses :
Vous avez besoin de l'index au lieu de la longueur avec Array # slice
Syntaxe
function get(arr) { for (var i = 0; i < arr.length; i++) { console.log(arr.slice(i, i + 3)); } } var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; get(arr);...
end Facultatif
Index de base zéro avant lequel terminer l'extraction.
slice
extrait jusqu'à la fin, mais sans l'inclure.Par exemple,
slice (1,4)
extrait le deuxième élément par le quatrième élément (éléments indexés 1, 2 et 3).Un index négatif peut être utilisé, indiquant un décalage par rapport à la fin de la séquence.
slice (2, -1)
extrait le troisième élément de l'avant-dernier élément de la séquence.Si
end
est omis,slice
extrait jusqu'à la fin de la séquence (arr.length
).Si
end
est supérieur à la longueur de la séquence,slice
extrait jusqu'à la fin de la séquence (arr.length
).
arr.slice([begin[, end]])
Le deuxième paramètre de slice ()
est l'index de fin. Donc, ce que vous dites, c'est de me donner tous les éléments de i
à l'index 3 (non inclusif).
Ce que vous devriez dire est slice (i, i + 3)
slice (i, 3)
signifie essentiellement que vous voulez un nouveau tableau avec des éléments entre l'index avant l'index i
et l'index 3
. Vous pouvez simplement utiliser une simple boucle for
à la place pour renvoyer les deux éléments précédents de chaque élément comme ceci:
var arr = [1,2,3,4,5,6,7,8,9] function get(x){ for (i = 0; i < x.length - 2; i++){ console.log(x.slice(i, i+3)); } } get(arr);
NB Le - 2
dans le x.length - 2
de la boucle for permet d'éviter de renvoyer un résultat indéfini car le les deux derniers éléments n'auront pas deux éléments de procédure.
Ou si vous préférez utiliser slice ()
, vous pouvez le faire:
var arr = [1,2,3,4,5,6,7,8,9] function get(x){ for (i = 0; i < x.length - 2; i++){ console.log("The proceeding two elements of " + x[i] + " is " + x[i+1] + " and " + x[i+2]); } } get(arr);
Encore une fois, le - 2
dans le x.length - 2
de la boucle for est d'éviter de retourner un résultat indéfini ou un résultat incomplet depuis les deux derniers les éléments n'auront pas deux éléments de procédure.
@FogangRodriq Heureux d'avoir pu aider l'homme. Bravo et bonnes années !!
Même chose pour vous Profitez !! :)
Essayez-vous d'obtenir l'index de
i
et les deux prochains nombres dans le tableau? Par exemple,[1,2,3]
, puis[2,3,4]
puis[3,4,5]
, et bientôt?