首页 > 解决方案 > Lodash - 不同身份的DifferenceBy

问题描述

我有以下数组:

[
  {
    id: 1
  },
  {
    id: 2
  },
  {
    id: 3
  },
  {
    id: 4
  }
]

每 5 秒我的应用程序会收到一个新数组,我需要比较下一个数组之间的差异......

所以下一个数组是:

[
  {
    conversation_id: 1
  },
  {
    conversation_id: 2
  },
  {
    conversation_id: 4
  }
]

考虑到身份不同。如何与前一个进行比较并获得一个包含排除项的数组?

[
  {
    id: 3
  }
]

标签: javascriptlodash

解决方案


过滤第一个数组并比较每个值,直到找到缺少的 id :

var array1 = [{
    id: 1
  },
  {
    id: 2
  },
  {
    id: 3
  },
  {
    id: 4
  }
];

var array2 = [{
    conversation_id: 1
  },
  {
    conversation_id: 2
  },
  {
    conversation_id: 4
  }
];

var test = array1.filter(
    conv => !array2.find(
          id => id.conversation_id === conv.id
       )
    );
console.log(test)


推荐阅读