countBy с использованием подчеркивания - выбрать счетчик, избегая дубликатов - PullRequest
0 голосов
/ 20 января 2020

Может быть самым простым, но все же. Из приведенных ниже данных я на самом деле хотел реализовать _.countBy, чтобы получить ответ, поскольку есть 1 из города A и 1 из города B. Подвох здесь в том, что первая и вторая записи на самом деле относятся к одному и тому же человеку. Таким образом, по логике вещей, есть один человек из Города А. Но в результате подсчета в результате 2 из Города А и 1 из Города B в отношении имеющихся записей. Не могли бы вы помочь решить это?

 var data=[{
      id:1,
      name:"xxx",
      city:"City A",
      skill:"Angular"
    },
    {
      id:2,
      name:"xxx",
      city:"City A",
      skill:"Node"
    },{
      id:3,
      name:"yyy",
      city:"City B",
      skill:"Angular"
    }];

1 Ответ

0 голосов
/ 20 января 2020

Прежде чем передавать его в _.countBy, необходимо убедиться, что каждый пользователь уникален, сначала набрав _.uniq. Чтобы гарантировать уникальность значений, я просто создал строку, объединив город с именем с разделителем (|).

const unique = _.uniq(data, p => p.city + "|" + p.name)
const byCity = _.countBy(unique, p => p.city)

Вы можете объединить обе строки в одну строку, используя _.chain.

_.chain(data).uniq(p => p.city + "|" + p.name).countBy(p => p.city).value()

Оба возвращают результат:

{  
    City A: 1,
    City B: 1
}
...