2017-06-21 104 views
-4

我們如何能在jQuery的比較陣列陣列陣列

var array1=['1','2','3','4']; 
var array2=['1,2,3,4,5','1,2,3,6','1,7,8,9']; 

比較這兩陣列。

我試試這個代碼:

for (var i = 0; i < array1.length; i++) { 
    for (var j= 0; j< array2.length; j++) { 
     if() 
     -------- 
    } 
} 

前手感謝

+1

你在找什麼結果呢? –

+0

如果這是您在問題標題中說的話,那麼您的第二個數組不是多維數組。只是一個正常的字符串數組。另外,這不是'jQuery',而是'JavaScript'。和比較可能意味着多種事物... – Ionut

+0

應該比較什麼?你期望什麼結果?爲什麼? –

回答

1

嘗試用join(',')includes()方法。

更新

  1. 返回與匹配參數

  2. 使用Array#reduce它的幫助下比賽的array1參數每一個

var array1 = ['1','2', '4']; 
 
var array2 = ['1,2,3,4,5', '1,2,3,6', '1,7,8,9']; 
 
var res = array2.reduce(function(a, b) { 
 
    array1.forEach(function(val) { 
 
    if (b.includes(val) && !a.includes(b)) { 
 
     a.push(b); 
 
    } 
 
    }) 
 
    return a; 
 
}, []) 
 
console.log(res); 
 
console.log(res.length > 0)

+0

非常感謝你的工作。但我想問一個問題。爲什麼這個腳本會顯示真或假? –

+0

如果模式位於字符串中某處,則不起作用。你需要使用indexOf並檢查零。 –

+0

如果我更改var array1 = ['1','2','3'];結果將顯示錯誤,但它仍然在array2 –

2

您可以檢查array1的每個值與array2的拆分項的任何值。

ES5

var array1 = ['1', '2', '3', '4'], 
 
    array2 = ['1,2,3,4,5', '1,2,3,6', '1,7,8,9'], 
 
    check = array2.some(function (c) { 
 
     return array1.every(function (b) { 
 
      return function (a, i) { 
 
       return a === b[i]; 
 
      }; 
 
     }(c.split(','))); 
 
    }); 
 
    
 
console.log(check);

ES6

var array1 = ['1', '2', '3', '4'], 
 
    array2 = ['1,2,3,4,5', '1,2,3,6', '1,7,8,9'], 
 
    check = array2.some(c => array1.every((b => (a, i) => a === b[i])(c.split(',')))); 
 
    
 
console.log(check);

+0

抱歉,當我粘貼你的腳本我得到這個標誌錯誤=> –

+0

@happytola,爲什麼你可以使用包括但不是箭頭功能? –

+0

@NinaScholz也許這是另一個「錯誤」 - 在問題的細節上位低一些。 –