1
votes

Obtenez les deux éléments suivants à partir d'un tableau JavaScript

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]
[]
[]
[]
[]
[]
[]
[]
[]


1 commentaires

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?


3 Réponses :


1
votes

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]])


0 commentaires

0
votes

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)


0 commentaires

0
votes

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.


2 commentaires

@FogangRodriq Heureux d'avoir pu aider l'homme. Bravo et bonnes années !!


Même chose pour vous Profitez !! :)