2017-10-12 71 views
1

匹配來自陣列搜索與價值第一的值,所以我們說,我們有兩個數組使用Javascript - 從其他陣列

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

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

我想不用做兩個for循環只返回第一個匹配值。所以不要通過從arr1獲取第一個值,然後在arr2中查找第二個值。我需要返回4

在沒有jQuery的React/Redux環境中工作可能。

+0

任何特殊的理由,爲什麼你不想要的循環? –

+1

也許他的老師說不要這樣做。 – epascarello

+0

我使用了大量的數據,因此for循環需要很長時間才能執行。最後一個我花了大約20秒 –

回答

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

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

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

這會搶在第一場比賽

+1

不應該返回indexOf(x)> -1'嗎? – pete

+0

@pete'0> = 0'與'0> -1'相同 –

+0

沒有看到'=':)。謝謝! – pete

0

您可以使用find()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

Ecmascript5溶液(用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

你可以使用的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);