Карта Лодаша и уникальная обратная связь
У меня есть переменная lodash;
var usernames = _.map(data, 'usernames');
который производит следующее:
[
"joebloggs",
"joebloggs",
"simongarfunkel",
"chrispine",
"billgates",
"billgates"
]
Как я могу настроить оператор lodash так, чтобы он возвращал только массив уникальных значений? например.
var username = _.map(data, 'usernames').uniq();
Ответы
Ответ 1
Многие способы, но uniq()
не метод в массиве, это метод lodash.
_.uniq(_.map(data, 'usernames'))
Или:
_.chain(data).map('usernames').uniq().value()
(Вторая непроверенная и, возможно, неправильная, но она закрывается.)
Как упоминалось в комментарии, в зависимости от ваших данных на самом деле, вы можете сделать это всего одним выстрелом, не вытащив из него все usernames
.
Ответ 2
Вы также можете использовать функцию uniqBy
которая также принимает iteratee, вызываемого для каждого элемента в массиве. Он принимает два аргумента, как показано ниже, где id - это параметр iteratee.
_.uniqBy(array, 'id')