3 votes

lodash find array in array retourne undefined

J'ai 2 tableaux

const arr1 = [[1,2],[3,4],[5,6]];
const arr2 = [1,2,3,4,5];

Je veux récupérer l'élément spécifique de ce tableau pour l'enregistrer.
Il y a deux cas :
1/

console.log(_.find(arr1,0,1));
console.log(_.find(arr2,0,1));

il renvoie undefined avec arr2
2/

console.log(_.find(arr1[1],0,1));

Celui-ci revient également undefined .
Quelqu'un peut-il me dire ce qui m'échappe ?

EDIT
Pour console.log(_.find(arr1,0,1)); Moi et @Mr.7 avons obtenu 2 résultats différents : le résultat que j'ai sur la console Chrome est [3,4] mais sur jsfiddle est [1,2] ce qui est la même chose que Mr.7 . Et j'ai remarqué quelque chose d'étrange dans cette _.find
Voici mon code :

import _ from 'lodash';

const arr1 = [[1,2],[3,4],[5,6]];
const arr2 = [1,2,3,4,5];
const arr3 = [[0,2],[3,4],[5,6]];

console.log(_.find(arr1,1,1));//[3,4]
console.log(_.find(arr1,0,1));//[3,4]
console.log(_.find(arr2,2));//undefined
console.log(_.find(arr1,0));//[1,2]

console.log(_.find(arr3,0));//[3,4]
console.log(_.find(arr1,1));//[1,2]

5voto

Pineda Points 66

Vous passez un nombre comme deuxième argument lorsque :

Lodash [_.find()](http://_.find()) attend un function comme son 2ème argument qui est invoquée à chaque itération.

Les fonction transmis comme deuxième argument accepte trois paramètres :

  • valeur - valeur actuelle sur laquelle on itère

  • index|clé - la valeur de l'index actuel du tableau ou la clé d'une collection

  • collection - une référence à la collection en cours d'itération

Vous transmettez la valeur des index là où une fonction est nécessaire.

Si vous voulez obtenir le deuxième élément de arr1 vous n'avez pas besoin de lodash mais il est possible d'y accéder directement en utilisant la notation entre crochets et le numéro d'index :

arr1[1]

Si vous insistez pour utiliser lodash, vous pouvez le deuxième élément de arr1 comme suit (bien que la raison pour laquelle vous préférez cette approche soit discutable) :

_.find(
     arr1,               // array to iterate over
     function(value, index, collection){   // the FUNCTION to use over each iteration
       if(index ===1)console.log(value)    // is the element at position 2?
     }, 
     1                   // the index of the array to start iterating from
   );                    // since you are looking for the element at position 2,
                         // this value 1 is passed, although with this set-up
                         // omitting won't break it but it would just be less efficient

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X