私は2つの配列を持っており、それらの内容(プロパティによるプロパティ)によって等しくないことを確認する必要があります。_differenceオブジェクト参照のチェックまたはプロパティによるプロパティのチェック
配列とその現在の値はイメージでデバッグされます。
は$$配列あなたはLodashから_.isEqual機能を使用することができます
私は2つの配列を持っており、それらの内容(プロパティによるプロパティ)によって等しくないことを確認する必要があります。_differenceオブジェクト参照のチェックまたはプロパティによるプロパティのチェック
配列とその現在の値はイメージでデバッグされます。
は$$配列あなたはLodashから_.isEqual機能を使用することができます
代わりlodashやJavaScriptの、二つのオブジェクトの等価性をチェックするangularjsでの方法があります:以下のようangular.equals
&を使用することができます。
angular.equals(newValue, oldValue);
それはの角度自身の平等だとして、それが$に問題を持っていないチェック$ hashkeyはそれを処理します(チェックしないことで)。また、プロパティの値によってすべてのプロパティによって等価性がチェックされ、型チェックも行われます。
のハッシュキーを除外します深い平等をチェックするために、任意のloadash関数またはJavaScript関数を提案します。この関数は、配列内のオブジェクトのすべてのプロパティを比較します。
var obj = [{ 'a': 1, b: 2 },{ 'a': 3, b: 4 }];
var other = [{ 'a': 1, b: 2 }, { 'a': 3, b: 4 }];
_.isEqual(OBJ、その他)。 // => true
両方の配列の要素が同じ順序である必要があることに注意することが重要です。これはfalseを返します:
var obj = [{ 'a': 1, b: 2 },{ 'a': 3, b: 4 }];
var other = [{ 'a': 3, b: 4 },{ 'a': 1, b: 2 }];
_.isEqualを(OBJ、その他)。 // => falseを同じ順序で持つ二つの配列を必要とする
UPDATE _.isEqualで
。あなたはこのように使用することができますあなたのケースでのでしかし、この秩序比較を克服するために、あなたは(sortByを使用して)、他のlodash機能を使用することができます。
_.isEqual(_.sortBy(obj, 'id'), _.sortBy(other, 'id'));
これは最初の配列があるかどうかを確認した後、IDによって配列をソートします等しい。複数のプロパティでソートすることも、カスタム関数でソートすることもできます。
この順番の比較を克服する方法はありますか? – Devendra
idプロパティを持っていることに気づいたので、idでソートしてequals関数を適用したり、他のプロパティやカスタム関数でソートすることもできます。私はこの秩序だった比較をどのように克服できるかを示す答えを編集しました。 –