当前位置: 首页 > 面试题库 >

如何在JavaScript中获得两个对象数组之间的差异

严亮
2023-03-14
问题内容

我有两个这样的结果集:

// Result 1
[
    { value="0", display="Jamsheer" },
    { value="1", display="Muhammed" },
    { value="2", display="Ravi" },
    { value="3", display="Ajmal" },
    { value="4", display="Ryan" }
]

// Result 2
[
    { value="0", display="Jamsheer" },
    { value="1", display="Muhammed" },
    { value="2", display="Ravi" },
    { value="3", display="Ajmal" },
]

我需要的最终结果是这些数组之间的差异–最终结果应如下所示:

[{ value="4", display="Ryan" }]

是否可以在JavaScript中执行类似的操作?


问题答案:

仅使用本机JS,类似的方法将起作用:

a = [{ value:"4a55eff3-1e0d-4a81-9105-3ddd7521d642", display:"Jamsheer"}, { value:"644838b3-604d-4899-8b78-09e4799f586f", display:"Muhammed"}, { value:"b6ee537a-375c-45bd-b9d4-4dd84a75041d", display:"Ravi"}, { value:"e97339e1-939d-47ab-974c-1b68c9cfb536", display:"Ajmal"},  { value:"a63a6f77-c637-454e-abf2-dfb9b543af6c", display:"Ryan"}]

b = [{ value:"4a55eff3-1e0d-4a81-9105-3ddd7521d642", display:"Jamsheer", $$hashKey:"008"}, { value:"644838b3-604d-4899-8b78-09e4799f586f", display:"Muhammed", $$hashKey:"009"}, { value:"b6ee537a-375c-45bd-b9d4-4dd84a75041d", display:"Ravi", $$hashKey:"00A"}, { value:"e97339e1-939d-47ab-974c-1b68c9cfb536", display:"Ajmal", $$hashKey:"00B"}]



function comparer(otherArray){

  return function(current){

    return otherArray.filter(function(other){

      return other.value == current.value && other.display == current.display

    }).length == 0;

  }

}



var onlyInA = a.filter(comparer(b));

var onlyInB = b.filter(comparer(a));



result = onlyInA.concat(onlyInB);



console.log(result);


 类似资料:
  • 问题内容: 我希望能够获得两个JavaScript对象图之间所有差异的列表,以及出现变化的属性名称和值。 就其价值而言,这些对象通常以JSON的形式从服务器中检索,并且通常不超过几层深度(即,可能是对象本身具有数据的数组,然后是具有其他数据对象的数组)。 我不仅要看到对基本属性的更改,还要看到数组成员等的数量差异等。 如果没有答案,我可能最终会自己写这个,但希望有人已经完成了这项工作或知道有人做了

  • 问题内容: 有没有办法返回JavaScript中两个数组之间的差? 例如: 问题答案: 我假设您正在比较普通数组。如果不是,则需要将 for 循环更改 为 for .. in 循环。 如果您不关心向后兼容性,那么更好的解决方案是使用过滤器。但是,此解决方案仍然有效。

  • 问题内容: 我使用以下代码在Android中使用Gson比较了两个JSON对象: 有两种方法可以使用Gson以JSON格式获取两个对象之间的 差异 吗? 问题答案: 如果将对象反序列化为,也可以使用Guava,则可以用来比较两个生成的地图。 请注意,如果您关心元素的 顺序 ,则不会保留s 字段的顺序,因此此方法不会显示这些比较。 这是您的操作方式: 该程序输出: 在此处阅读更多有关结果对象包含哪些

  • 问题内容: Java类库具有一个名为DateTime的类。DateTime具有此方法: 该参数返回此参数与参数之间的天数。它没有方法 我碰巧需要的。是否有一个类似于DateTime但有这种方法的类? 问题答案: 不熟悉DateTime … 如果您有两个日期,则可以对它们调用getTime以获取毫秒,获取diff并除以1000。例如 如果您有日历对象,则可以调用 并做同样的

  • 如何获得两个数据帧之间的差异。例如,我有两个数据帧 我想收到

  • 问题内容: 我有以下两个数组。我想要这两个数组之间的区别。也就是说,如何找到两个数组都不存在的值? 问题答案: 注意: 这个答案将返回的值是不存在的,它不会返回值不在。