#javascript #arrays #react-native #search
#javascript #массивы #react-native #Поиск
Вопрос:
Я пытаюсь выполнить поиск этих ингредиентов в этом массиве и добавить значение к data
, чтобы отобразить его, но это не работает. Я очень новичок в javascript, поэтому я был бы очень признателен, если кто-нибудь будет достаточно любезен, чтобы помочь мне.Это то, что я сделал:
const Search = () => {
const ingridients = [ ["paprika", "parsley"], ["steak", "ground beef"],["milk", "eggs", "cheese"] ]
const [input, setInput] = useState();
const categorize = (term) => {
setInput(ter )
let data = []
if (term) {
const newData = ingridients.filter(() => {
if (RegExp(searchTerm, "gim").exec())
return RegExp(searchTerm, "gim").exec()
})
} else {
data = []
}
}
return(
<TextInput onChange={(text)=> categorize(text)} value={input}/>
)
}
Комментарии:
1. вы 2d массив строк. почему не простой массив строк? можете ли вы добавить снимок экрана и объяснить, чего именно вы хотите достичь?
2. Я хочу, чтобы пользователь, например, искал паприку, и если я выполняю рендеринг
data
с помощью Flatlist, пользователь может видеть предложения по поиску, которые отображаются из функции ингредиентов
Ответ №1:
Вы имеете в виду что-то вроде этого?
import React, { useState } from 'react';
import { Text, TextInput, View } from 'react-native';
export default function App() {
const ingridients = [
'paprika',
'parsley',
'steak',
'ground beef',
'milk',
'eggs',
'cheese',
];
const [input, setInput] = useState();
const [filteredData, setFilteredData] = useState([]);
const filter = (term) => {
setInput(term);
if(/d/.test(term) || /[a-zA-Z]/.test(term)) {
setFilteredData(ingridients.filter(ingridient => ingridient.includes(term)));
}
else {
setFilteredData([]);
}
};
return (
<React.Fragment>
<TextInput
onChangeText={(text) => filter(text)}
value={input}
style={{ backgroundColor: 'grey' }}
/>
<View style={{ padding: 40 }}>
{filteredData.map(ingridient => (
<Text style={{ color: 'black' }}>{ingridient}</Text>
))}
</View>
</React.Fragment>
);
}
Комментарии:
1. Большое вам спасибо за это!!!!!! как мне отредактировать это, чтобы показывать предложения только после ввода пользователем? Так что, например, если нет ввода, он не устанавливает данные, даже если я отступаю назад и ввода нет
2. Добро пожаловать. Я отредактировал функцию фильтра, чтобы она отображала значения только при вводе алфавита