UnionBy, используя ID и update_date больше чем - PullRequest
0 голосов
/ 16 марта 2019

Я использую lodash, и мне нужна помощь по объединению двух массивов с использованием идентификатора, но я обновляю второй массив только в том случае, если 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 больше, чем другой объект?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 16 марта 2019

Используйте _.unionWith(), чтобы проверить, является ли id обоих объектов и, если update_date 1-го элемента массива (a), больше, чем у 2-й элемент массива (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}]

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>
...