首页 > 解决方案 > javascript:通过某个id比较两个对象数组的内容并返回true或false

问题描述

我需要一点帮助来比较两个对象数组,并通过使用两个数组内的 id 来查看数组 A 是否具有数组 B 的相同内容,例如:

example false:

ArrayObjectA = [{
      id: 1,
      name: josh,
      age: 31
      },{
      id: 2,
      name: Kyle,
      age: 21}];
    
ArrayObjectB = [{
      id: 1,
      name: josh,
      age: 31
      }];
      
      
ArrayObjectB content is equals to ArrayObjectA => false

example true:

ArrayObjectA = [{
      id: 1,
      name: josh,
      age: 31
      },{
      id: 2,
      name: Kyle,
      age: 21}];
    
ArrayObjectB = [{
      id: 1,
      name: josh,
      age: 31
      },{
      id: 2,
      name: Kyle,
      age: 21}];
      
ArrayObjectB content is equals to ArrayObjectA => true
      
      

我找到了一个名为 lodash 的库,但我不知道是否有用。

任何帮助表示赞赏。

标签: javascriptecmascript-6

解决方案


我们可以从每个数组中获取 ids 列表并检查所有元素是否相等

const compareArrays = (arr1, arr2) => {
  const ids1 = arr1.map(v => v.id).sort() 
  const ids2 = arr2.map(v => v.id).sort()

  return ids1.length === ids2.length && ids1.every((v, ind) => v === ids2[ind])
}

推荐阅读