繁体   English   中英

如果两个数组在Jquery中具有嵌套对象,则比较两个数组是否相等

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM