[英]Compare Two arrays for equality if they have nested objects in Jquery
我有两个数组,每个数组有5个对象。 在继续之前,我想检查这两个数组是否相等。 我试图寻找答案,但不幸的是找不到具有多个对象的嵌套数组的任何内容。 有没有办法做到这一点?
例如。 Array1 ==> 5个嵌套对象 Array2 ==> 5个嵌套对象
现在检查是否Array1 == Array2并返回一个布尔值。
您可以在没有jQuery的情况下进行操作-使用全局可用的JSON.stringify
方法将它们更改为字符串,那么比较将很容易:
JSON.stringify(arr1) === JSON.stringify(arr2);
这是一种hack。 但这确实很好。 在Angular框架通过在其函数上运行toString()
然后再对属性进行正则表达式检查它的注入的时代(哦,是的),我认为这只是一个有效的解决方案;)
var arr1 = [{val: 1}, {val: 2}, {val: 3}, {val: 4}, {val: 5}]
var arr2 = [{val: 1}, {val: 2}, {val: 3}, {val: 4}, {val: 5}]
var arr3 = [{val: 1}, {val: 2}, {val: 3}, {val: 9}, {val: 5}]
function isEqual(arr1, arr2) {
// If the array lengths are different, return false
if (arr1.length !== arr2.length) return false;
// Grab an array of true/false values determined
// by the result of the `some` callback
// Return false if `false` is found in the array, otherwise true
return arr1.map(function (one) {
return arr2.some(function (two) {
return two.val === one.val;
});
}).indexOf(false) > -1 ? false : true;
}
isEqual(arr1, arr2); // true
isEqual(arr1, arr3); // false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.