Создать коллекцию из дубликатов ключей, нечувствительных к регистру - PullRequest
0 голосов
/ 07 апреля 2020

Мне нравится структура массива объектов

const data = [
  { key: 'One' },
  { key: 'Two' },
  { key: 'Three' },
  { key: 'one' },
  { key: 'two' },
];

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

const data = [
  { key: ['One', 'one'] },
  { key: ['Two', 'two'] },
  { key: 'Three' },
];

Я нашел здесь почти похожее решение - Лода sh создать коллекцию из дубликатов ключей объекта , но я не смог адаптировать ее под себя. Я не могу понять, как правильно фильтровать весь массив без потери производительности.

1 Ответ

0 голосов
/ 07 апреля 2020

Попробуйте это:

data.map(item => {
  let pos = results.findIndex(item2 => {
    let collection = item2.key.map(val => val.toLowerCase())
    let inc = item.key.toLowerCase()
    return collection.includes(inc)
  })
  if (pos == -1) {
    results.push({ key: [item.key] })
  } else {
    results[pos].key.push(item.key)
  }
})

Возвращает это:

[
  { "key":["One","one"] },
  { "key":["Two","two"] },
  { "key":["Three"] }
]

Вот кодекс, который я сделал: Группа массивов по

...