๊ด€๋ฆฌ ๋ฉ”๋‰ด

Daehyunii's Dev-blog

์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž vs filter( ) ๋ฉ”์„œ๋“œ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ๋น„๊ต ๋ณธ๋ฌธ

๐Ÿ“š Language & CS knowledge/React

์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž vs filter( ) ๋ฉ”์„œ๋“œ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ๋น„๊ต

Daehyunii 2022. 12. 22. 14:24
//์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋กœ ํ‘œํ˜„
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 ํŽ˜์ด์ง€์ด๋‹ค. ๊ทธ๋ƒฅ ์˜ฌ๋ ค๋ณด์•˜๋‹ค..๐Ÿฅฒ