Javascript _.差异检查对象引用还是按属性检查属性?
我有两个数组,我需要检查它们的内容是否相等(按属性) 数组及其当前值在映像中调试 建议任何loadash函数或javascript函数检查深度相等,这将排除数组的$$hashkey 您可以使用Lodash的功能。此函数将比较数组中对象的所有属性Javascript _.差异检查对象引用还是按属性检查属性?,javascript,angularjs,underscore.js,Javascript,Angularjs,Underscore.js,我有两个数组,我需要检查它们的内容是否相等(按属性) 数组及其当前值在映像中调试 建议任何loadash函数或javascript函数检查深度相等,这将排除数组的$$hashkey 您可以使用Lodash的功能。此函数将比较数组中对象的所有属性 var obj = [{ 'a': 1, b: 2 },{ 'a': 3, b: 4 }]; var other = [{ 'a': 1, b: 2 }, { 'a': 3, b: 4 }]; _.isEqual(obj,其他)//=>正确 需要注意
var obj = [{ 'a': 1, b: 2 },{ 'a': 3, b: 4 }];
var other = [{ 'a': 1, b: 2 }, { 'a': 3, b: 4 }];
_.isEqual(obj,其他)//=>正确
需要注意的是,两个数组的元素顺序必须相同。这将返回false:
var obj = [{ 'a': 1, b: 2 },{ 'a': 3, b: 4 }];
var other = [{ 'a': 3, b: 4 },{ 'a': 1, b: 2 }];
_.isEqual(obj,其他)//=>错误
更新
使用u.isEqual时,需要两个数组的顺序相同。但为了克服这种有序比较,您可以使用其他lodash函数,因此在您的情况下,您可以这样使用(使用):
这将首先按id对数组进行排序,然后验证数组是否相等。您也可以按多个属性或自定义函数进行排序。您可以使用Lodash中的函数。此函数将比较数组中对象的所有属性
var obj = [{ 'a': 1, b: 2 },{ 'a': 3, b: 4 }];
var other = [{ 'a': 1, b: 2 }, { 'a': 3, b: 4 }];
_.isEqual(obj,其他)//=>正确
需要注意的是,两个数组的元素顺序必须相同。这将返回false:
var obj = [{ 'a': 1, b: 2 },{ 'a': 3, b: 4 }];
var other = [{ 'a': 3, b: 4 },{ 'a': 1, b: 2 }];
_.isEqual(obj,其他)//=>错误
更新
使用u.isEqual时,需要两个数组的顺序相同。但为了克服这种有序比较,您可以使用其他lodash函数,因此在您的情况下,您可以这样使用(使用):
这将首先按id对数组进行排序,然后验证数组是否相等。您也可以按多个属性或自定义函数进行排序。angularjs中有一种方法可以检查两个对象的相等性,而不是lodash或javascript:
angular.equals可按如下方式使用:
angular.equals(newValue, oldValue);
由于它是angular自己的相等性检查,所以$$hashkey没有问题,它将处理这个问题(通过不检查)。此外,它还将通过类型检查来逐个检查所有属性值的相等性
angularjs中有一种方法可以检查两个对象的相等性,而不是lodash或javascript:angular.equals
&可以按如下方式使用:
angular.equals(newValue, oldValue);
由于它是angular自己的相等性检查,所以$$hashkey没有问题,它将处理这个问题(通过不检查)。此外,它还将通过类型检查来逐个检查所有属性值的相等性
有什么方法可以克服这种有序比较?我注意到您有一个id属性,因此可以按id排序并应用equals函数,甚至可以按任何其他属性或自定义函数排序。我编辑了答案以说明如何克服这种有序比较。有什么方法克服这种有序比较吗?我注意到您有一个id属性,因此可以按id排序并应用equals函数,甚至可以按任何其他属性或自定义函数排序。我编辑了答案,以展示如何克服这种有序的比较。