2017-10-12 3 views
1

Alors disons que nous avons deux tableauxJavascript - correspondant à la première valeur de la recherche de tableau avec une valeur d'autre tableau

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

const arr2 = [6, 7, 8, 9, 10, 4, 5,]; 

Je veux revenir juste la première valeur correspondante sans faire deux pour les boucles. Donc, pas en prenant la première valeur de arr1 chercher dans arr2 puis deuxième valeur ect. Dans ce cas, je devrais retourner 4.

Travailler dans l'environnement React/Redux sans jQuery possible.

+0

une raison particulière pour laquelle vous ne voulez pas de boucles? –

+1

Probablement son professeur a dit de ne pas le faire. – epascarello

+0

Je travaille avec un grand nombre de données, donc les boucles for prennent beaucoup de temps à s'exécuter. Le dernier que j'ai fait a pris environ 20 secondes –

Répondre

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

const arr2 = [6, 7, 8, 9, 10, 4, 5,]; 

arr1.find((x) => arr2.indexOf(x) >=0); 

qui va saisir le premier match

+1

Ne devrait-il pas retourner 'indexOf (x)> -1'? – pete

+0

@pete '0> = 0' est la même chose que' 0> -1' –

+0

N'a pas vu le '=' :). Merci! – pete

0

Vous pouvez utiliser find() avec la méthode includes().

const arr1 = [1, 2, 3, 4, 5]; 
 
const arr2 = [6, 7, 8, 9, 10, 4, 5,]; 
 

 
var r = arr1.find(e => arr2.includes(e)); 
 
console.log(r)

0

solution Ecmascript5 (avec fonction Array.some()):

var arr1 = [1, 2, 3, 4, 5], 
 
    arr2 = [6, 7, 8, 9, 10, 4, 5,], 
 
    result; 
 
\t 
 
arr2.some(function(n){ return arr1.indexOf(n) !== -1 && (result = n) }) 
 

 
console.log(result);

0

Vous pouvez utiliser la puissance de Set.

const 
 
    arr1 = [1, 2, 3, 4, 5], 
 
    arr2 = [6, 7, 8, 9, 10, 4, 5], 
 
    result = arr2.find((s => a => s.has(a))(new Set(arr1))); 
 

 
console.log(result);