Programming/React

[ React ] filter ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ (ํ•„ํ„ฐ๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜)

seulye 2022. 7. 7. 16:14

Xplatform์—๋Š” filter ํ•จ์ˆ˜๋Š” ์ •๋ง ๋ง ๊ทธ๋Œ€๋กœ ํ•„ํ„ฐ๋ฅผ ๊ฑธ๊ณ , ํ•ด์ œํ•˜๋Š” ์—ญํ• ์„ ํ–ˆ์—ˆ๋‹ค.

React์—์„œ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒŒ ์žˆ์„๊นŒ, ํ•˜๋ฉฐ ๊ฒ€์ƒ‰์„ ํ•ด๋ดค์ง€๋งŒ

์•„๋ฌด๋ฆฌ ์ฐพ์•„๋ด๋„ ์กฐ๊ธˆ ๋‹ค๋ฅธ filter ํ•จ์ˆ˜๋ฐ–์— ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค....

๋ญ ์–ด์ฉŒ๊ฒ ์–ด ์จ์•ผ์ง€.

 

 

๋‚ด๊ฐ€ ํ•„์š”ํ–ˆ๋˜ ๊ธฐ๋Šฅ์„ ๋‹ค๋ฅธ ๊ฒƒ์— ๋น„์œ ํ•ด์„œ ์ ์–ด ๋ณด์ž๋ฉด

 

ํ•™์ƒ๋ณ„ ์„ฑ์ ๊ด€๋ฆฌ ํ™”๋ฉด์˜ ์กฐํšŒ์กฐ๊ฑด์— ํ•™๊ต / ํ•™๋…„ / ๋ฐ˜ / ํ•™์ƒ ์ฝค๋ณด๋ฐ•์Šค๊ฐ€ ์žˆ๋‹ค. 

ํ•™๊ต, ํ•™๋…„, ๋ฐ˜ ์ฝค๋ณด๋ฐ•์Šค๋ฅผ ํด๋ฆญํ•  ๋•Œ ๋งˆ๋‹ค ํ•™์ƒ ์ฝค๋ณด๋ฐ•์Šค ๊ฐ’์ด ๋‹ฌ๋ผ์ ธ์•ผ ํ•œ๋‹ค. 

 

ํ•™๊ต / ํ•™๋…„ / ๋ฐ˜ ์œผ๋กœ ํ•™์ƒ์„ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— submit์„ ๊ณ„์† ๋‚ ๋ฆฌ๋Š” ๊ฑด ์ข‹์ง€ ์•Š๋‹ค๊ณ  ๋А๊ผˆ๋‹ค. 

๊ทธ๋ž˜์„œ ํ•™์ƒ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™”๋ฉด ์ผœ์งˆ ๋•Œ ๊ฐ€์ ธ์˜จ ํ›„์— ํ•„ํ„ฐ๋ฅผ ๊ณ„์† ๊ฑธ์–ด์„œ ๋ณด์—ฌ์ง€๋Š” ๋กœ์ง์„ ์ƒ๊ฐํ–ˆ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  filter์€ ํ•ด์ œํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ดˆ๊ธฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋ฐ์ดํ„ฐ์…‹์ด ํ•„์š”ํ•˜๋‹ค.

๊ทธ๊ฑธ initStudentList ๋ผ๊ณ  ํ•ด์ฃผ์—ˆ๊ณ , filter๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ฐฐ์—ด์€ studentList๋ผ๊ณ  ํ•ด์ฃผ์—ˆ๋‹ค.

 

 

const [initEmpList, setInitEmpList] = useState<Array<any>>([]);

/* ํ™”๋ฉด ์ผœ์งˆ ๋•Œ ํ•™์ƒ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค */
useEffect(() => {
        getInitStudentList();
        // eslint-disable-next-line react-hooks/exhaustive-deps
    }, []);

/* ํ•™์ƒ ๋ฆฌ์ŠคํŠธ ๊ฐ€์ ธ์˜ค๋Š” ์ฟผ๋ฆฌ ํ˜ธ์ถœ */
const getInitStudentList = async () => {
       ... ์ƒ๋žต
        setInitStudentList(arrStudentListData);
    };

์ฟผ๋ฆฌ ํ˜ธ์ถœ ํ›„ response ๊ฐ’์„ arrStudentListData์— ๋‹ด๊ณ , ๊ทธ ๊ฐ’์„ initStudentList์— setํ•ด์ค€๋‹ค.

 

 

initStudentList์—๋Š” ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์™”๋‹ค.  

{ school : ํ•˜๋ฒ„๋“œ, grade : 1, class : 1, studentId : 1 , studentNm : ํ™๊ธธ๋™ },

{ school : ์˜ฅ์Šคํผ๋“œ, grade : 1, class : 1, studentId : 2 , studentNm : ๊น€๊ตญ๋ฏผ }

 

	const { school, grade , class } = searchConditionInfo.orgInfo;
	arrStudentList = initStudentList.filter(
           (std)=> 
                (school ? std.school === school : true) && 
                (grade ? std.grade === grade : true) && 
                (class ? std.class === class : true)
            );
    	} 
        setStudentList(arrStudentList);

- searchConditionInfo.orgInfo ์—๋Š” ํ•™์ƒ์— ๋Œ€ํ•œ ์กฐํšŒ์กฐ๊ฑด์ด ๋“ค์–ด์žˆ๋‹ค. 

- filter๋ถ€๋ถ„์—์„œ 'std' ๋ถ€๋ถ„์€ ๊ทธ๋ƒฅ initStudentList์™€ ๊ฐ™๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ์ด๊ฒŒ ์ฐธ ํ—ท๊ฐˆ๋ ธ์—ˆ๋‹ค.. 

- school, grade, class๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ํ•ด๋‹น ์กฐ๊ฑด์„ skipํ•˜๊ฒŒ ํ–ˆ๋‹ค.