2017-09-03 9 views
0

これまでの投稿から助けを得て助けてくれましたが、これを動作させることができません。すべてのgroup2配列要素がgroup1配列に存在するかどうかをテストしたい。現時点では、私は自分が望むものとは反対の結果を得ています。私は '比較配列'のjQueryセクションでコードを逆にしようとしましたが、運はありません。例示的な結果は、以下の列に示されている。 https://jsfiddle.net/v82pfx2w/。誰もこれに光を当てることができますか?配列の要素を別の配列内でテストする

group1:      group1:      group1: 
Luxembourg     Greece      Greece 
Netherlands     Netherlands     Netherlands 
Belgium      Luxembourg     Luxembourg 
           Belgium      Belgium 
group2 
Netherlands     group2      group2 
Greece      Netherlands     Luxembourg 
Luxembourg     Luxembourg     Belgium 
Belgium      Belgium 

NO MATCH      YES MATCH     YES MATCH 




https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js 


<div id="containerStore"> 
    <div class='AggregCountriesBNLUX'> 
    <label>Netherlands</label> 
    <label>Greece</label> 
    <label>Luxembourg</label> 
    <label>Belgium</label> 
</div> 

<div class='AggregCountriesWEur'> 
    <label>Netherlands</label> 
    <label>Luxembourg</label> 
    <label>Belgium</label> 
</div> 

<div class='AggregCountriesWEur'> 
    <label>Luxembourg</label> 
    <label>Belgium</label> 
</div> 
</div> 




var group1 = []; 
group1 = ['Luxembourg', 'Netherlands', 'Belgium'] 

$('#containerStore div[class^="AggregCountries"]').each(function(i, obj) { 

    group2 = $(this).map(function() { 
     return $.trim($(this).text()); 
    }) 
    .get(); 
    group2 = group2.join(); 


// compare arrays: 
    var compareGroups = group1.every(function(val) { 
    return group2.indexOf(val) >= 0; 
    }) 
    alert(compareGroups); 
}); 

答えて

1

あなたはfiddleを更新every

var hasAll = group2.every(function(val) { 
    return group1.indexOf(val) >= 0; 
}); 

使用することができます。

あなたのバイオリンでは、あなたはgroup2の別のインデックスに各ラベルのテキストを取得していませんでした。私はfind('label')を追加してコレクションを返します。また、配列を文字列に置き換えたgroup2 = group2.join();を実行していました。

+0

ありがとうございますが、「group2.everyは関数ではありません」というエラーが表示されます。 – Silverburch

+0

@Silverburchはフィドルで答えを更新しました。 – adiga

+0

ああ、そういうわけで私はラベルを '見つけられませんでした。あなたの助けが大いに感謝! – Silverburch

関連する問題