に含まれる()関数を使用して、私は、配列A
を持って、コンソールが私を示しています この場合
Array [ Object, Object ].
私はObject
要素のいずれかをクリックし
今、変数B
があります。この変数には、配列A
の最初のオブジェクトが含まれています。私はincludes
関数を使ってこれをチェックしたい:
A.includes(B)
ただし、falseを返します。 includes()
の使用に何か問題がありますか?
に含まれる()関数を使用して、私は、配列A
を持って、コンソールが私を示しています この場合
Array [ Object, Object ].
私はObject
要素のいずれかをクリックし
今、変数B
があります。この変数には、配列A
の最初のオブジェクトが含まれています。私はincludes
関数を使ってこれをチェックしたい:
A.includes(B)
ただし、falseを返します。 includes()
の使用に何か問題がありますか?
私が正しくあなたの質問を理解していれば、セットアップは次のようになります。Javascriptがオブジェクトの参照に基づいてオブジェクトの等価性を評価するため
const A = [ {hello: "world"}, {hi: "everyone"} ];
const B = {hello: "world"};
console.log(A.includes(B)); // returns false
A.includes(B)
falseを返します(それらが保存されている場所それらの値ではなく)。結果として、BがAに含まれるように見えても、2つのオブジェクトは互いに独立して宣言されるため、異なる参照を持ちます。あなたがここにJavaScriptでのオブジェクトの平等についての詳細を読むことができます:http://adripofjavascript.com/blog/drips/object-equality-in-javascript.html
を、この情報を使用して、あなたが期待される答えを得るので、あなたの設定を変更することができます。
const A = [ {hello: "world"}, {hi: "everyone"} ];
const B = A[0];
console.log(A.includes(B)); // returns true
これは私にとってうまくいきますが、厳密に同等の作業が含まれているという事実に悩まされているかもしれません。他のオブジェクトが実際に同じオブジェクトでない限り、オブジェクトは同じプロパティを持つ別のオブジェクトと等しいとはみなされません。次の例を参照してください:
const b = {} //some object
const A = [b, 2]
console.log(A.includes(b)) //true
console.log([{}, 2].includes(b)) //false because {} !== b
をおそらくそれは、同じオブジェクトが含ま* *れません。均等に見えるオブジェクトでは不十分であることに注意してください。 – Bergi