問題タブ [deepequals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
15014 参照

equality - Java 7のequals()およびdeepEquals()

メソッドの説明によると:

引数が互いに深く等しい場合はtrueを返し、そうでない場合はfalseを返します...最初の引数のequalsメソッドを使用して等式を決定します。

これは(私にとって)、オブジェクトが参照を維持するすべてのオブジェクトもequals()メソッドを使用して等しい場合、オブジェクトは非常に等しいことを示唆しています。そして、それらが参照しているすべてのオブジェクトも同じです。と ..

それで ..equality is determined by using the equals method of the first argument.

これはどう違うの.equals()ですか?ここでequalsを適切に説明すると仮定すると、オブジェクトは別のオブジェクトと等しく、オブジェクトのすべてのフィールドもそれに等しくなります。

Objects.deepEquals()との違いを示す例を教えてくださいObjects.equals()

0 投票する
1 に答える
749 参照

c# - LINQ&XNode.DeepEqualsは比較を2回実行しますか?

LINQを使用して2つのXMLドキュメントを比較しています。2つの要素の間に違いが見つかった場合は、それらのノードをリストに追加し、違いのレポートを生成するために使用します。

「問題」は、違いが見つかった場合、それがリストに2回追加されることです。

たとえば、2つの単純なXMLドキュメントがあるとします。

期待される:

実際:

そして、このコードを使用してノードを比較し、ノードが異なる場合はリストに追加します。

Nodeクラスには、2つのXNodeが含まれています。1つは期待値用で、もう1つは実際用です。

1つの違いとして、これによりdiffListに2つの要素が与えられます。

DeepEqualsは最初に要素を比較し、次に値を比較しているようです。私の質問は、重複を引き起こしている可能性のあるコードに何かありますか、それともこれは私が何もできないDeepEqualsの機能ですか?

私はこれが常に起こるかどうかを確認するためにテストを実行しました、そしてそれは事実であるようです。したがって、フォローアップの質問は次のようになります。XNode.DeepEqualsを使用して、リストの違いごとに常に2つの要素を取得できますか?これを確認することで、違いごとに2番目の要素を除外して作業を続行できますが、常に存在しない限り、明らかにそれを行うことはできません。

0 投票する
2 に答える
906 参照

java - equals / Arrays.deepequals は同一の配列に対して false を返します

2 つの配列が同一かどうかをテストしようとしています。それらの内部のすべての値を出力しました。これらの値が同じであることがわかりますが、何らかの理由で等値テストは常に false を返します。equals と Arrays.deepEquals を使用してみましたが、これら 2 つの方法のいずれも機能しません。

これが私のコードです:

出力は次のとおりです。

0 投票する
1 に答える
4206 参照

javascript - should.jsでdeepEqualアサーションを行うにはどうすればよいですか?

should.js (最新バージョン) で deepEqual アサーションを作成しようとしましたが、成功しませんでした。動作するものを取得できますが、では動作しequalませんdeepEqual。実際、私はdeepEqual方法がないことを見ています。

これが私が試したことです:

けっこうだ。を調べてみるshouldと、ゲッターであることがわかります。

ゲッターなので、そのキーを調べるにはどうすればよいですか? これはほとんど機能します:

しかし、それから私は見る

だから私はこの時点で立ち往生しています。何が続くか見たいだけshouldです。

ドキュメントを読みましたshould.jsが、文字通りノードのアサートモジュールを拡張すると書かれていますが、ノードのアサートはdeepEqual.

ドキュメントにはまったく言及deepEqualされていないため、本当に混乱しています。さらにややこしいことに、ノード REPLdeepEqualに入ると が表示されます。しかし、私が知る限り、shouldそれは要素に埋もれています。ok

assertEqualTL;DR:から、またはそれに相当するものを呼び出すにはどうすればよいshouldですか?

0 投票する
2 に答える
893 参照

java - javaで1D配列と2D配列の等号を比較する

質問が 2 つあります。JAVA プログラミング言語を使用していますが、配列の使用に問題があることがわかりました。

ここにいくつかの異なる配列があります:

質問 1 : deepEquals を使用して、play1 と pre が等しいかどうかを確認することはできますか? また、pre が 2D 配列で、play1 が 1D 配列であることも知っています。play1 が pre と等しいかどうかを確認したい場合は、次のように確認します。

コードは正しいですか?1D 配列と 2D 配列が等しいことを確認することはできますか? または、ArrayList を使用する必要がありますか? 私は ArrayList にあまり詳しくありません。誰かが例を挙げて説明してくれれば幸いです。

質問 2 :ただし、play1 と play2 の間でチェックしたい場合、出力も false です。等しい要素を持たない場合でも、2 つの配列間でチェックしたいのですが、両方の配列が次のような同じ要素で構成されている場合: {0,3,6}play1 と play2 の両方で見つけることができる場合、出力は true になる必要があります..

ありがとう。

0 投票する
3 に答える
1811 参照

java - 2 つの Java オブジェクトの Deep Equal をチェックする最も速くて効率的な方法は何ですか?

数百万のオーダーのサイズのbyte[]フィールドを持つ2つのJavaオブジェクトがあります。これらの Java オブジェクトのDeep Equalをチェックする最も速くて効率的な方法は何ですか?

サンプル エンティティ:

注:私はORMツールのためにそれを行っています。基本的には、永続コンテキストに存在するオブジェクトでオブジェクト(管理された状態)をチェックしています。

0 投票する
3 に答える
772 参照

javascript - ネストされたオブジェクトの「深い等価性」をチェックする関数

2 つのオブジェクトの値が同じかどうかをチェックする関数を作成しようとしています。この関数では、元のオブジェクト内に値として格納されているすべてのオブジェクトが等しいかどうかを確認する必要があります。私が開発したアプローチ (以下のコードを参照) は、最初に非オブジェクト値の等価性をチェックすることです。次に、これらがすべて一致する場合は、オブジェクトを再度反復処理し、元の関数を再帰的に呼び出します。これにより、2 つのオブジェクトのネストされた各レベルを比較できます。

ただし、このアプローチは部分的にしか機能しません。再帰呼び出しの性質上、ネストされたオブジェクトの等価性は、オブジェクトの最初のキーと値のペアでしかチェックできません。ネストされたオブジェクトの最初のセットが比較され、再帰呼び出しが返されると、ネストされたオブジェクトを含む追加のキーと値のペアをチェックする方法がわかりません。関数は次のとおりです。

私の基本的な問題は、ネストされたオブジェクトの深い等価性をチェックするために再帰呼び出しが必要であると信じているが、このチェックを正常に実行できるのは 1 回だけだということです。誰もこのような問題を解決しようとしましたか? より具体的なものが必要な場合は、特定のオブジェクトに対する私の結果の例を提供します。ありがとう!

0 投票する
0 に答える
36 参照

java - 2 [][] int 配列には、まったく同じ位置にまったく同じ値があります...効率的に確認するにはどうすればよいですか?

Java での多次元 int [][] について助けが必要です。最初のものは次のとおりです。

2 つ目は次のとおりです。

false を返します...しかし、なぜですか? そんな状況になったら、プログラムをやめたいです。このチェックが正しく機能しないため、現時点では無限ループに陥っています。testArr 内の 1 つの値が startArr とは別の位置にある場合 (もちろん、異なる位置に 2 つの値があります)、false を返す必要があります。