【发布时间】:2021-09-06 02:25:44
【问题描述】:
我正在 React 中构建一个搜索栏,用于搜索“SlideData”。 我正在使用对象的“text1”属性进行过滤。 最好解析属性(标题,文本1,文本2,文本3)中的所有文本。 我将如何搜索每个属性中的所有字符串?
除此之外,如果搜索的单词被突出显示会很好,但我知道那是额外的工作。为清楚起见,如果我搜索 kenny(在 text3 属性中),它会显示“kenny”的结果,并且只显示 kenny 的来源。现在它只会过滤 text1 属性中的文本。
const [searchTerm, setSearchTerm] = useState("");
const SlideData = [
{
slideIndex: 1,
title: "My name is Bob",
text1: "Bob likes to eat hamburgers",
text2: "Kenny likes to eat hot dogs",
text3: "Terry likes milkshakes"
},
{
slideIndex: 2,
title: "My name is Jill",
text1: "Jill likes to eat hamburgers",
text2: "Joshua likes to eat hot dogs",
text3: "Steven likes milkshakes"
}
]
<div className="search-results">
<ul className="search-list">
{SlideData.filter((item) => {
if (searchTerm === "") {
return null;
} else if (item.text1.toLowerCase().includes(searchTerm.toLowerCase())) {
return item;
}
}).map((item) => (
<div key={item.slideIndex} style={{ padding: "10px" }}>
<li className="search-item">{item.text1}</li>
<a
className="search-link"
onClick={() => {
context.setCurrentSlide(item.slideIndex);
setSearchTerm("");
}}
>
Go To Slide {item.slideIndex}
</a>
</div>
))}
</ul>
</div>
【问题讨论】:
标签: reactjs object filter properties array.prototype.map