์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์ vs filter( ) ๋ฉ์๋ ์ฝ๋ ๊ฐ๋ ์ฑ ๋น๊ต
//์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์๋ก ํํ
const EmojiList = ({ emojis, keyword }) => {
return (
<Container>
{emojis.map((emoji) => {
return keyword === "" ? (
<EmojiListItem emoji={emoji} key={emoji.title}></EmojiListItem>
) : emoji.title.includes(keyword) ||
emoji.keywords.includes(keyword) ? (
<EmojiListItem emoji={emoji} key={emoji.title}></EmojiListItem>
) : undefined;
})}
</Container>
);
};
export default EmojiList;
๋ฐ๋ธ์ฝ์ค ๋ฆฌ์กํธ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์ ์ค์ต์ ํ๋ ์ค์ ๊ฒ์์ ํตํด ์ผ์นํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋งํ๋ ๊ธฐ๋ฅ์ ๋ง๋ค๊ฒ ๋์๊ณ ,
๊ฐ์์ ํด๋น ๋ถ๋ถ์ ๋ฃ๊ธฐ์ ์ ์ค์ค๋ก ๋จผ์ ๋ง๋ค์ด๋ณด๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ผ๋ก ์ฝ๋๋ฅผ ๋จผ์ ๊ตฌํํด ๋ณด์๋ค. ์ฌํ๊น์ง ์กฐ๊ฑด๋ฌธ ๋์ ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์, ๋ ผ๋ฆฌ ๊ณฑ(&&), ๋ ผ๋ฆฌ ํฉ(||)์ผ๋ก ํํ์ ๋ง์ดํด์ ์๊ฐ์ ์ผ๋ก ์๊ฐ๋ ๋ฐฉ์์ธ ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์๋ก ํด๋น ์ฝ๋๋ฅผ ๊ตฌํํ๊ณ ์ ๋์ํ๋ ๊ฒ์ ํ์ธํ์ง๋ง ๋ณด๋ค์ํผ ๊ฐ๋ ์ฑ์ด ํ์ ํ๊ฒ ๋จ์ด์ง๋๊ฒ์ ํ์ธํ ์ ์๋ค.
์ฝ๋๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํด๋ณด๋ฉด keyword์ ๊ฐ์ด ""๋น ๋ฌธ์์ด ์ด๋ผ๋ฉด ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ๊ทธ๊ฒ ์๋๋ผ๋ฉด keyword์ ๊ฐ์ emoji.title๊ณผ emoji.keywords์ ๋ค์ด๊ฐ ์๋์ง๋ฅผ ํ๋จํ์ฌ true์ธ ๋ฐ์ดํฐ๋ง ๋ ๋๋งํ๋๋ก ์ค์ ํ๋ค.
๋ฐ๋ก ๋ฐ๋ธ์ฝ์ค ๊ฐ์๋ฅผ ํตํด์ ๊ฐ์ฌ๋์ ์ด๋ป๊ฒ ์ฝ๋๋ฅผ ๊ตฌํํ๋์ง ํ์ธํ๋ค. ๊ฐ์ฌ๋์ filter( ) ๋ฐฐ์ด ๊ณ ์ฐจ ํจ์๋ฅผ ์ด์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํ์ จ๋ค.
//filter()๋ก ๊ตฌํ
const EmojiList = ({ emojis, keyword }) => {
return (
<Container>
{emojis
.filter((emoji) => {
return (
emoji.title.indexOf(keyword) >= 0 ||
emoji.keywords.indexOf(keyword) >= 0
);
})
.slice(0, 10)
.map((emoji) => {
return (
<EmojiListItem emoji={emoji} key={emoji.title}></EmojiListItem>
);
})}
</Container>
);
};
export default EmojiList;
ํ ๋์ ๋น๊ตํด๋ filter()๋ก ๊ตฌํํ ์ฝ๋๊ฐ ๊น๋ํ๊ณ ๋ณด๊ธฐ๊ฐ ์ข์๊ฒ์ ํ์ธํ ์ ์๋ค. Array์ ์ ์ฉํ ๊ณ ์ฐจ ํจ์๋ค์ ์ต๋ํ ํ์ฉํ๋๊ฒ์ด ๊ฐ๋ ์ฑ ์ธก๋ฉด์์ ํฐ ๋์์ด ๋ ๊ฒ ๊ฐ๋ค.
์์ ์ฌ์ง์ ๋ฐฉ๊ธ ๋ง๋ค์ด๋ณธ Emoji Search ํ์ด์ง์ด๋ค. ๊ทธ๋ฅ ์ฌ๋ ค๋ณด์๋ค..๐ฅฒ