var hits = ["a", "b", "c"];
if (hits !== ["a", "b", "c"]){
//Do some stuff here
};
あなたはcomparsionとして、配列の値を使用することができますとして配列の値を使用できますか?上記のことは私にとってはうまくいかないようですが、これがこの方法かどうか、または比較のために配列のリテラル値にアクセスする別の方法があるのだろうかと思いました。
var hits = ["a", "b", "c"];
if (hits !== ["a", "b", "c"]){
//Do some stuff here
};
あなたはcomparsionとして、配列の値を使用することができますとして配列の値を使用できますか?上記のことは私にとってはうまくいかないようですが、これがこの方法かどうか、または比較のために配列のリテラル値にアクセスする別の方法があるのだろうかと思いました。
あなたは(===
と!==
)は、オブジェクトの場合はの参照ではなく、値を比較し、この
if (JSON.stringify(hits) === JSON.stringify(["a", "b", "c"])) {
等価演算子を書くことができます。 JavaScriptの配列はオブジェクトです。このため、これらは2つの異なる配列(同じ外観、同じ値を持ちますが、同じ配列ではありません)が異なるため、参照が異なります。
両方のオペランドがオブジェクトの場合、JavaScriptは比較しますオペランドがメモリ内の同じオブジェクトを参照するときに等しい内部参照。
MDNについて詳しく読むことができます。
注:==
と!=
等価演算子は(も参照してオブジェクトを比較し、彼らはただ単純な比較(と、それは多くの場合、予期しないです)以上のことをするので、一般的にそれらを使用し、常に厳密な等価演算子に固執しないことをお勧めします===
および!==
)。
少なくともいくつかの方法があります。いくつかの人々は、両方の配列のJSON.stringify
を比較することをお勧めしますが、単純なケースでは機能しますが、それはパフォーマンス上の良い解決策ではありません。ここでより良い方法を見つけることができますhttps://stackoverflow.com/a/14853974/704894
lodash
やunderscore
のようなユーティリティライブラリを使用した場合、この機能は既に存在します。 https://lodash.com/docs#isEqual
だから '=='と '!='はどうですか?彼らは参照を比較するだろうか? –
なぜ ''a' === 'a''が' true'を返すのですか? – Lewis
@RajaprabhuAravindasamyはい、そうです。私はこれを私の答えに加えました。 –
http://stackoverflow.com/questions/7837456/how-to-compare-arrays-in-javascript –
あなたは簡単に配列の比較のための関数を書くことができます。 –
配列はオブジェクトなので、そのような配列は比較できません。オブジェクトに対して比較演算子を使用すると、その参照が比較され、比較結果が返されます。 –