質問: winning_set.includes(result); console.log(i); // => false ``` falseになる原因がわかるかご存知でしたら、教えていただけると嬉しいです。 よろしくお願いします。
回答: 配列同士を直接比較する方法はないようです。 配列を文字列に変換してから比較すると「やりたいこと」に近いことはできます。 ``` const winning_set = [ ['グー', 'チョキ'], ['チョキ', 'パー'], ['パー', 'グー'] ]; const result = ['グー', 'チョキ']; const i = winning_set.some( item => item.toString() == result.toString() ); console.log(i); // => true ``` 区切り記号(,)と同じ値が含まれる場合、誤認する場合がありますので工夫が必要です。 汎用的な配列比較は難しいです。JSONに変換し、JSONのライブラリを使用するのも一案かと思います。 次の例では`[',', ',,']`と`[',,', ',']`を同一視してしまいます。 ``` const winning_set = [ [',', ',,'], ['グー', 'チョキ'], ['チョキ', 'パー'], ['パー', 'グー'] ]; const result = [',,', ',']; const i = winning_set.some( item => item.toString() == result.toString() ); console.log(i); //trueと誤認 ```