比较两个数组Javascript - Associative

9 javascript arrays comparison associative

我在这里搜索了一个质量方法来比较javascript中的关联数组.我找到的唯一合适的解决方案是PHP.JS项目,它具有一些比较数组函数.唯一的问题是这些函数将第一个数组视为第二个数组的关键.在我的情况下,至少两个数组并不总是具有相同的键数和相同的键.这会导致函数输出不包含array1中可能不存在但在array2中存在的键的结果.到目前为止,我唯一能想到的就是在翻转参数的情况下运行array_diff_associative()函数两次然后将它们组合起来(这似乎有问题,因为第一个参数再次被用作第二个参数的键).

有什么建议?谢谢.

Bra*_*are 9

这是一个老问题,但是因为它首先出现在谷歌搜索比较数组中,我想我会投入一个替代解决方案,即使数组有两个具有相同值的不同对象也能正常工作.

function arrays_equal(a, b) {
    return JSON.stringify(a) == JSON.stringify(b);
}
Run Code Online (Sandbox Code Playgroud)

注意:这取决于订单,因此如果订单无关紧要,您可以提前进行排序.


Dea*_*vey 7

我认为以下应该做你想要的:

function nrKeys(a) {
    var i = 0;
    for (key in a) {
        i++;
    }
    return i;
}
function compareAssociativeArrays(a, b) {
   if (a == b) {
       return true;
   }   
   if (nrKeys(a) != nrKeys(b)) {
       return false;
   }
   for (key in a) {     
     if (a[key] != b[key]) {
         return false;
     }
   }
   return true;
}
Run Code Online (Sandbox Code Playgroud)