Нечувствительный к регистру фильтр React Native SectionList - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь сделать "нечувствительный к регистру" фильтр на SectionList в реагировать родной. Данные выглядят примерно так:

const DATA = [
  {
    title: "Main dishes",
    data: ["Pizza", "Burger", "Risotto"]
  },
  {
    title: "Sides",
    data: ["French Fries", "Onion Rings", "Fried Shrimps"]
  },
  {
    title: "Drinks",
    data: ["Water", "Coke", "Beer"]
  },
  {
    title: "Desserts",
    data: ["Cheese Cake", "Ice Cream"]
  }
];

Я понимаю, что мне нужно использовать "уменьшить" и "фильтровать" вместе, чтобы отфильтровать полные данные объекта для передачи в SectionList, благодаря это полезно post from Tholle .

НО ... Я хочу убедиться, что фильтрация не учитывает регистр ? По сути, фильтр для поискового текста "RI" должен дать мне вывод:

Main dishes
  Risotto

Sides
  French Fries
  Onion Rings
  Fried Shrimps

Буду признателен за вашу помощь!

1 Ответ

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

Лучший вариант - преобразовать поисковый запрос и все элементы, которые вы перебираете, в общую форму, например, сделать их все строчными.

const searchQuery = "RI"

const result = DATA.reduce((accumulator, currentObj) => {
  let output = {}
  const transformedSearchQuery = searchQuery.toLowerCase()
  const currentTitle = currentObj.title
  const currentData = currentObj.data

  const filteredData = currentData.filter(item => {
    const transformedItem = item.toLowerCase()
    return transformedItem.includes(transformedSearchQuery)
  })

  if (filteredData.length) {
    output.title = currentTitle
    output.data = filteredData
  }

  if (Object.entries(output).length) {
    return [...accumulator, output]
  } else {
    return accumulator
  }
}, [])

Выход:

console.log(result)

[
  { title: 'Main dishes', data: [ 'Risotto' ] },
  {
    title: 'Sides',
    data: [ 'French Fries', 'Onion Rings', 'Fried Shrimps' ]
  }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...