Вы можете использовать _.groupBy()
_.head()
(первый элемент каждой пары) для группировки элементов. Затем используйте _.mapValues()
для итерации каждой группы, сопоставьте ее, чтобы получить элемент _.last()
, и используйте _.uniq()
, чтобы получить только уникальные значения:
const data = {"Params":[["section","North"],["monitor","Single Monitor"],["section","North"],["monitor","Dual Monitor"]]};
const result = _.mapValues(
_.groupBy(data.Params, _.head), // group by the first item
g => _.uniq(_.map(g, _.last)) // map each group to the last item, and get unique values
);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
С помощью loda sh lodash / fp вы можете сгенерировать функцию, используя _.flow()
, которая делает то же самое:
const { flow, groupBy, head, mapValues, map, last, uniq } = _;
const fn = flow(
groupBy(head),
mapValues(flow(
map(last),
uniq
))
);
const data = {"Params":[["section","North"],["monitor","Single Monitor"],["section","North"],["monitor","Dual Monitor"]]};
const result = fn(data.Params);
console.log(result);
<script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>