๐Ÿคฏ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐ˜๋ณต๊ณผ ๋ฐฐ์—ด ๋‚ด์žฅ ํ•จ์ˆ˜ Map() ์•Œ์•„๋ณด๊ธฐ

leehyunjuยท2021๋…„ 6์›” 20์ผ
0
post-thumbnail

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์˜ map() ํ•จ์ˆ˜

arr.map(callback, [thisArg])

์ด ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ด์™€ ๊ฐ™๋‹ค.

callback : ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋‹ค์Œ ์„ธ ๊ฐ€์ง€๋‹ค.

  1. currentValue : ํ˜„์žฌ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ์š”์†Œ
  2. index : ํ˜„์žฌ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ์š”์†Œ์˜ ์ธ๋ฑ์Šค ๊ฐ’
  3. array : ํ˜„์žฌ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ์›๋ณธ ๋ฐฐ์—ด

thisArg(์„ ํƒ ํ•ญ๋ชฉ) : callback ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  this ๋ ˆํผ๋Ÿฐ์Šค


๐Ÿ“Œ ์ฝ”๋“œ ํ•œ ํŽ˜์ด์ง€๋กœ ๋ฐฐ์—ด ๋‚ด์žฅ ํ•จ์ˆ˜ (map, filter, concat) ์•Œ์•„๋ณด๊ธฐ

import React, {useState} from 'react';

๐Ÿ‘‰//์ดˆ๊นƒ๊ฐ’ ์„ค์ •ํ•˜๊ธฐ
const IterationSample = ()=> {
//๊ฐ์ฒด๋“ค์„ ๋ฐฐ์—ด์— ๋‹ด์•˜๋‹ค
    const [names, setNames] = useState([
        {id:1, text:'๋ˆˆ์‚ฌ๋žŒ'},
        {id:2, text:'์–ผ์Œ'},
        {id:3, text:'๋ˆˆ'},
        {id:4, text:'๋ฐ”๋žŒ'},
    ]);

    const [inputText, setInputText] = useState('');
    const [nextId, setNextId] = useState(5); 
    
    //๐Ÿ‘‰์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง e.target.value๋Š” ํ˜„์žฌ DOM ๊ฐ’
    const onChange = e => setInputText(e.target.value);
    const onClick = () => { //ํด๋ฆญ
        const nextNames = names.concat({
        ๐Ÿ‘‰//concat : ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๋งŒ๋“ค์–ด์ค€๋‹ค.
        ๐Ÿ‘‰//push : ๊ธฐ์กด ๋ฐฐ์—ด ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค.
            id:nextId, 
            text:inputText  
        });
        
        ๐Ÿ‘‰ํด๋ฆญ๋˜๊ณ ๋‚˜๋ฉด nextId์— 1์ถ”๊ฐ€, nextNames ์ด๋ฆ„์œผ๋กœ ๋Œ€์ฒด, setInputText ๊ณต๋ฐฑ์ฒ˜๋ฆฌ
        setNextId(nextId + 1);
        setNames(nextNames);
        setInputText(''); 
    };
    
    //๐Ÿ‘‰filter : ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐฐ์—ด์˜ ํŠน์ • ํ•ญ๋ชฉ์„ ์ง€์›Œ์ค€๋‹ค. (๋ฐฐ์—ด ๋‚ด์žฅ ํ•จ์ˆ˜)
    ๐Ÿ’“filter ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ์›์†Œ๋งŒ ์ œ์™ธ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
    const onRemove = id => {
        const nextNames = names.filter(name => name.id !== id);
        setNames(nextNames);
    }
    
    //๐Ÿ‘‰์ด๋ฆ„ ๋”๋ธ”ํด๋ฆญ ์‹œ ์ง€์›Œ์ฃผ๊ธฐ
    const nameList = names.map( name => (
        <li key={name.id} onDoubleClick={() => onRemove(name.id)}>
            {name.text}
        </li>)); 
    return (

        <>
            <input value={inputText} onChange={onChange} />
            <button onClick={onClick}>์ถ”๊ฐ€</button>
            <ul>{nameList}</ul>
        </>
        
        )
}

export default IterationSample;
  • filter : ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐฐ์—ด์˜ ํŠน์ • ํ•ญ๋ชฉ์„ ์ง€์›Œ์ค€๋‹ค.
  • push : ๊ธฐ์กด ๋ฐฐ์—ด ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค.
  • concat : ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ค€๋‹ค.
profile
์•„๋Š‘ํ•œ ๋‡Œ๊ณต๊ฐ„ ๐Ÿง 

0๊ฐœ์˜ ๋Œ“๊ธ€