2017-09-02 112 views

回答

2

相反lodash或JavaScript,有一個在angularjs方法來檢查兩個對象的平等:angular.equals &可以使用如下:

angular.equals(newValue, oldValue); 

由於它的角自己的平等檢查它不具有$問題$ hashkey它會處理(通過不檢查)。此外,它還會檢查所有屬性是否通過屬性值進行檢查,並檢查類型。

Plunker Example

2

的hashkey可以使用_.isEqual功能從Lodash。該函數將比較數組中對象的所有屬性。

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,等); // =>假

UPDATE

隨着_.isEqual你需要在相同的順序有兩個數組。但是,爲了克服這種有序的比較,你可以使用其他lodash功能,讓你的情況,你可以這樣使用(使用sortBy):

_.isEqual(_.sortBy(obj, 'id'), _.sortBy(other, 'id')); 

這將首先通過ID數組排序,後驗證,如果陣列等於。您也可以通過多個屬性進行排序,或者通過自定義函數進行排序

+0

任何方法來克服這種有序的比較? – Devendra

+0

我注意到你有一個id屬性,所以你可以通過id進行排序並應用equals函數,甚至可以通過任何其他屬性或自定義函數進行排序。我編輯了答案,以顯示如何克服這種有序的比較。 –