1. ホーム
  2. javascript

[解決済み] 2つの配列が同じ値を持つかどうかを知る方法

2022-04-27 08:02:53

質問

1つはajaxリクエストからの情報で満たされ、もう1つはユーザーがクリックしたボタンを格納するものです。私はこのコードを使用しています(私はサンプルの数字で満たされた)。

var array1 = [2, 4];
var array2 = [4, 2]; //It cames from the user button clicks, so it might be disordered.
array1.sort(); //Sorts both Ajax and user info.
array2.sort();
if (array1==array2) {
    doSomething();
}else{
    doAnotherThing();
}

しかし、それは常に false 2つの配列が同じであっても、名前が異なれば、同じ配列になります。(ChromeのJS Consoleで確認しました)。そこで、この2つの配列が同じものを含んでいるかどうかを知る方法はないでしょうか?なぜ false ? 最初の配列にあるどの値が、2番目の配列にないかを知るにはどうすればよいのでしょうか?

どのように解決するのですか?

配列を並べ替えて、1つずつ値を比較します。

function arrayCompare(_arr1, _arr2) {
    if (
      !Array.isArray(_arr1)
      || !Array.isArray(_arr2)
      || _arr1.length !== _arr2.length
      ) {
        return false;
      }
    
    // .concat() to not mutate arguments
    const arr1 = _arr1.concat().sort();
    const arr2 = _arr2.concat().sort();
    
    for (let i = 0; i < arr1.length; i++) {
        if (arr1[i] !== arr2[i]) {
            return false;
         }
    }
    
    return true;
}