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.
sliceextrait 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
endest omis,sliceextrait jusqu'à la fin de la séquence (arr.length).Si
endest supérieur à la longueur de la séquence,sliceextrait 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
iet les deux prochains nombres dans le tableau? Par exemple,[1,2,3], puis[2,3,4]puis[3,4,5], et bientôt?