Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript _.差异检查对象引用还是按属性检查属性?_Javascript_Angularjs_Underscore.js - Fatal编程技术网

Javascript _.差异检查对象引用还是按属性检查属性?

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,其他)//=>正确 需要注意

我有两个数组,我需要检查它们的内容是否相等(按属性)

数组及其当前值在映像中调试

建议任何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,其他)//=>正确

需要注意的是,两个数组的元素顺序必须相同。这将返回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函数,甚至可以按任何其他属性或自定义函数排序。我编辑了答案,以展示如何克服这种有序的比较。