Сравните два массива разной длины, используя lodash - PullRequest
0 голосов
/ 29 апреля 2018

Как сравнить два массива разной длины с помощью lodash? Первый массив содержит существующий элемент, второй содержит новый и существующий элемент. Как я могу получить новый элемент, используя lodash?

+---------+-----------------------+-----------------+
| Existing| Source of new element | Expected result |
+---------+-----------------------+-----------------+
| []      | [1]                   | [1]             |
| [1,2]   | [3,4]                 | [3, 4]          |
| [1,2,3] | [3,4]                 | [4]             |
+---------+-----------------------+-----------------+

Ответы [ 3 ]

0 голосов
/ 29 апреля 2018

Я не понимаю, зачем вам нужен lodash, так как это довольно просто сделать с Array#filter(), как уже предлагалось, но все же, если вы хотите положиться на lodash, используйте _. Разность () .

const
  a = [1, 2, 3],
  b = [3, 4];
  
  console.log(_.difference(b, a));
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>
0 голосов
/ 30 апреля 2018

Вы можете использовать _. Разность с и передать компаратор, который сравнивает два массива, например:

const
  a = [1, 2, 3],
  b = [3, 4];
  console.log(_.differenceWith(b, a, _.isEqual));
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>
0 голосов
/ 29 апреля 2018

Это очень простая операция фильтрации с использованием собственных Array#filter() и Array#includes()

let a = [1, 2, 3],
    b = [3, 4],
    unique = b.filter(e => !a.includes(e))

console.log(unique)

Или вместо includes() передать первый массив в Set и использовать Set#has()

let a = new Set([1, 2, 3]),
  b = [3, 4],
  unique = b.filter(e => !a.has(e));

console.log(unique)
...