Получить значения uniq из массива объектов, созданного с помощью lodash - PullRequest
1 голос
/ 13 июля 2020

Я новичок в реакции. Здесь я пытаюсь получить уникальные элементы из вновь созданного массива объектов.

const data = _.uniq(
  orderData?.Sessions.map(session => ({
    label: `${session.Activity.Name}`,
    value: `${session.Activity.Name}`
  }))
);

Я пробовал это, но, тем не менее, он возвращает мне массив объект, который имеет уникальные элементы с использованием любого из двух ключей.

объект не должен дублироваться.

может ли кто-нибудь помочь мне с этим?

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Это должно быть _.uniqBy(), ссылка uniqBy

const data = _.uniqBy(
  orderData ? .Sessions.map(session => ({
    label: `${session.Activity.Name}`,
    value: `${session.Activity.Name}`
  })), 'label' or 'value'
);

Это должно быть либо по метке, либо по значению

Пример

document.querySelector("body").onload = function() {
  // By 'label'
  console.log("By label");
  console.log(
    _.uniqBy(
      [
        {'label' : 'name', 'value' : 'Test Name 1'},
        {'label' : 'name', 'value' : 'Test Name 2'},
        {'label' : 'company', 'value' : 'Test Company 1'}
      ], 'label'
    )
  )
  // By 'vlaue'
  console.log("By value");
  console.log(
    _.uniqBy(
      [
        {'label' : 'name', 'value' : 'SO User'},
        {'label' : 'name', 'value' : 'SO User'},
        {'label' : 'company', 'value' : 'Test Company 1'}
      ], 'value'
    )
  )
}
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>
0 голосов
/ 13 июля 2020

Вы должны использовать _.uniqBy(data, 'id');//id that is key you have to remove duplicate value from array

Ваш сценарий будет использоваться следующим образом

, если он удален меткой , затем

const data = _.uniqBy(
  orderData ? .Sessions.map(session => ({
    label: `${session.Activity.Name}`,
    value: `${session.Activity.Name}`
  })),'label'
);

при удалении значением тогда

const data = _.uniqBy(
  orderData ? .Sessions.map(session => ({
    label: `${session.Activity.Name}`,
    value: `${session.Activity.Name}`
  })),'value'
); 

Если вы получите более подробную информацию, то Ссылка

...