2016-03-31 3 views
-1
var a = [["attribute1", "param1", 1], ["attribute2", "param2", 2], ["attribute3", "param3", 3]]; 

var b = ["attribute1", "param1", 1]; 

どのように配列 "b"はjavascriptの配列 "a"にありますか?その中の値だけで比較できますか?特定の配列をチェックする方法は配列の配列に存在し、純粋にその値と比較していますか?

私はbrute forceメソッドを試しましたが、これはjQueryまたはunderscore.jsを使用して効率的な方法で行うことができますか?助けを前にありがとう。

+1

ご質問は不明であり、あなたが問題を自分で解決するためにあらゆる努力を示していません。 – dan08

+0

私はbrute forceメソッドを試しました、私は質問していますこれは効率的な方法でjQueryまたはunderscore.jsを使って行うことができますか? –

+0

あなたのコードはどこですか? –

答えて

2

原油と遅い方法は

var isPresent = a.filter(function(val){ return val.join("===") == b.join("==="); }).length > 0 ; 

又は

var isPresent = a.filter(function(val){ return JSON.stringify(val) == JSON.stringify(b); }).length > 0 ; 

は、より高速な方法があり得るかもしれない

var isPresent = a.filter(function(val){ 
    return val[0] == b[0] && val[1] == b[1] && val[2] == b[2] ; 
}).length > 0 ; 

及びB内のアイテムの数は、より多くの/少ない場合3より大きい

私はあなたのために作られたバイオリンアウト
+0

原産地?ああ、間違いなく。 downvoteのために十分ではありませんが、私は本当にこれをお勧めしません。 – Bergi

+0

これらはすべて「真」でなければならないときに 'false'を返します。または私は何かを逃していますか? – putvande

+0

'.filter(...)> 0'の代わりに' .some(...) 'を使いたいとします(少なくとも動作するには' .filter(...).length> 0') – Bergi

1
function check_if_array_exists_in_array(a, b) { 
    for(int i = 0; i < a.length; i++) { 
    var arr = a[i]; 
    if(arr.length == b.length) { 
     for(int j = 0; j < arr.length; j++) { 
     if(arr[j] !== b[j]) { 
      break; 
     } 
     } 
     return true; 
    } else { 
     break; 
    } 
    } 
    return false; 
} 
1

チェック:

JSFiddle - compare two arrays

var a = [["attribute1", "param1", 1], ["attribute2", "param2", 2], ["attribute3", "param3", 3]]; 

var b = ["attribute1", "param1", 1]; 

var str = "", 
    counter = 0; 

//traverse through multidimensional array 
for (var i = 0; i < a.length; i++) { 

    //cancel the nested loop if a result was found 
    if (str === 'exist') {break;} 

    //process length-matching arrays only 
    if (a[i].length === b.length) { 

    //loop through both array's values 
    for (var x = 0; x < a[i].length; x++) { 

     if (a[i][x] == b[x]) { 

     //value match 
     counter++; 
     if (counter == b.length) { 

      //equal arrays 
      str = 'exist'; 
      break; 
     } 

     } else { 

     //value mismatch 
     counter = 0; 
     str = 'not existing'; 
     break; 
     } 
    } 
    } else {str = 'not existing';} 
} 
document.getElementById('fb').innerHTML = str; 
関連する問題