我有兩個數組,我需要檢查他們的內容不同(屬性屬性)_.difference檢查對象引用或按屬性檢查屬性?
數組及其當前值在圖像中調試。
推薦任何loadash功能或JavaScript函數來檢查深平等,這將排除$$陣列
我有兩個數組,我需要檢查他們的內容不同(屬性屬性)_.difference檢查對象引用或按屬性檢查屬性?
數組及其當前值在圖像中調試。
推薦任何loadash功能或JavaScript函數來檢查深平等,這將排除$$陣列
相反lodash或JavaScript,有一個在angularjs方法來檢查兩個對象的平等:angular.equals
&可以使用如下:
angular.equals(newValue, oldValue);
由於它的角自己的平等檢查它不具有$問題$ hashkey它會處理(通過不檢查)。此外,它還會檢查所有屬性是否通過屬性值進行檢查,並檢查類型。
的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數組排序,後驗證,如果陣列等於。您也可以通過多個屬性進行排序,或者通過自定義函數進行排序
任何方法來克服這種有序的比較? – Devendra
我注意到你有一個id屬性,所以你可以通過id進行排序並應用equals函數,甚至可以通過任何其他屬性或自定義函數進行排序。我編輯了答案,以顯示如何克服這種有序的比較。 –