私はJavascriptを学習していますが、配列が同じかどうかを比較するためのSOの関数があります。しかし、2つの配列が[string1、string2] & [string2、string1]の場合、私の現在の関数はfalseを返します。基本的には、2つのポジションが交換されます。コードは次のとおりです。javascriptでの配列の比較順序は関係ありません
function _compareArrays(arr1,arr2){
var result = arr1 != null && arr2 != null && arr1.length == arr2.length && arr1.every(function(element) {
return arr2.indexOf(element);
});
return result ;
}
ただし、これらの2つの配列を同じものとして返すようにします。だから、私は.every
を.indexOf()
に変更しました。しかし、私は疑問を持っています。カウンタがどのように増分されて、各要素に対して比較が行われているかを確認するにはどうしたらいいですか? 私は、ここで、我々はやる、C++で、のような、
for (int i = 0; i < 10; i++)
if (arr1[i] == arr2[i]
cout<<"Elements are same\n";
を意味し、私はカウンターをインクリメントし、明示的なi++
を持っています。上記の関数ではどうなりますか?
ありがとうございます!
最初のコードブロックは完全なごみです。 'indexOf'は私が今まで読んだことのある文書では引数として関数を取っていません - フラットなタイヤを持っているときに.everyを.indexOf()に変更しました、ホイールをバナナに置き換えますか? –
私は配列の[浅いコピーを作成する](https://stackoverflow.com/questions/3978492/javascript-fastest-way-to-duplicate-an-array-slice-vs-for-loop)、sortそれらを使用して、あなたが言及した比較メカニズムを使用します – Phil
定義した '_compareArrays'メソッドは常に-1を返します。 明示的にカウンタをインクリメントせずに 'every'メソッドを反復する方法は、itterationを自動的に行うArrayプロトタイプ上の関数です。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every – nipuna777