首页 > 解决方案 > UnionBy 使用 ID 和 update_date 大于

问题描述

我正在使用lodash,我需要帮助来使用 ID 统一两个数组,但仅当 update_date 大于其他对象时才更新第二个数组。

例子:

第一个数组:

[
 {
  id:xpto
  name:test
  update_date:1519211809934 //Because I`m using Date.now()
 },
{
  id:testes
  name:nameTest
  update_date:1519211809934 //Because I`m using Date.now()
 }
]

第二个数组:

[
 {
  id:xpto
  name:test
  update_date:1519211809934 //Because I`m using Date.now()
 }
]

我知道,如果我使用_unionBy(array1, array2, id)第一个替换第二个,但是,只有当 update_date 大于另一个对象时,我才能添加一个条件来统一?

谢谢你的帮助!

标签: javascriptlodash

解决方案


用于_.unionWith()检查id两个对象的 是否相同,以及update_date第一个数组项的 (a)是否大于第二个数组项的 (b)。

const array1 = [{"id":"xpto","name":"test","update_date":1519211809934},{"id":"testes","name":"nameTest","update_date":1519211809934}]

const array2 = [{"id":"xpto","name":"test","update_date":1519211809934}, {"id":"testes","name":"test","update_date":1}]

const result = _.unionWith(array1, array2, (a, b) =>
  a.id === b.id && a.update_date < b.update_date
)

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>


推荐阅读