Concept: Filter pattern with strings (using for loop)
Create a SearchNames component that:
['Alice', 'Bob', 'Charlie', 'David', 'Eve']When user types “a”:
Search: [input showing: a]
Results: Alice, Charlie, David
When user types “e”:
Search: [input showing: e]
Results: Alice, Charlie, Eve
import { useState } from 'react';
export default function SearchNames() {
const names = ['Alice', 'Bob', 'Charlie', 'David', 'Eve'];
const [search, setSearch] = useState('');
// Filter names using a for loop
return (
<div>
{/* Add search input */}
{/* Display filtered results */}
</div>
);
}
.toLowerCase() for case-insensitive search.includes() to check if name contains search textimport { useState } from 'react';
export default function SearchNames() {
const names = ['Alice', 'Bob', 'Charlie', 'David', 'Eve'];
const [search, setSearch] = useState('');
// FILTER: Find names matching search using a for loop
const filtered = [];
for (let i = 0; i < names.length; i++) {
const nameLower = names[i].toLowerCase();
const searchLower = search.toLowerCase();
if (nameLower.includes(searchLower)) {
filtered.push(names[i]);
}
}
return (
<div>
<input
type="text"
value={search}
onChange={(e) => setSearch(e.target.value)}
placeholder="Search names..."
/>
<p>Results: {filtered.join(', ')}</p>
</div>
);
}
.toLowerCase() makes search case-insensitive.includes() checks if string contains substringNote: Learn more about the built-in .filter() method at MDN: Array.filter()
Try: