๐๋ฆฌ์กํธ๋ฅผ ๋ค๋ฃจ๋ ๊ธฐ์ ๐์ ๊ณต๋ถํ๋ฉด์ ์ปดํฌ๋ํธ์ ๋ฐ๋ณต์ ๊ณต๋ถํ๋ฉด์ ๋ฐฐ์ด ๊ฐ์ฒด์ ๋ด์ฅํจ์๋ฅผ ๋ง์ด ์ฌ์ฉํ์๋๋ฐ, ์ด๋ฅผ ์ข ๋ ์์ธํ๊ฒ ์์๋ณด๊ณ ์ถ์๋ค.
๋ฆฌ๋ค๊ธฐ์์ filter()๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ์์ ๊ฐ ์์๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ ๊ธฐ๋ฅ์ ํํฐํจ์๋ฅผ ์ฌ์ฉํ๋ค.
const onRemove = id => {
const nextNames = name.filter(name => name.id !== id);
setNames(nextNames);
};
์ด ํจ์๋ ์ ๋ ฅ๋ id๋ฅผ ๋ฐ์์ ๊ทธ id์ ๋ค๋ฅธ ์ฆ, ํด๋น๋ id๋ฅผ ์ ์ธํ ๋๋จธ์ง id์ ํด๋น๋๋ name๋ค์ ๋ชจ์๋์ ๋ฐฐ์ด์ด nextNames๊ฐ ๋๋๊ฒ์ด๋ค.
๊ทธ๋ฌ๊ณ ๋์ setNames(nextNames)๋ฅผ ํตํด์ names๊ฐ์ ์ ๋ฐ์ดํธํด์ฃผ๋๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด, ์ฌ๊ธฐ์ filter()ํจ์๊ฐ ์ด๋ป๊ฒ ์ ์ฉ์ด ๋๊ณ , ์ด๋ป๊ฒ ์ฐ์ด๋ ๊ฒ์ผ๊น?
ํ๋ฒ ์์๋ณด๋๋ก ํ๊ฒ ๋ค.
filter()
filter()๋ฉ์๋๋ ์ฃผ์ด์ง ํจ์์ ์กฐ๊ฑด์ ๋ถํฉํ๋ ์์๋ค์ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํ๋ ๋ฉ์๋์ด๋ค.
๋ง ๊ทธ๋๋ก ํด๋น ๋ฐฐ์ด์ ํํฐ๋งํ๋ ๊ฒ์ด๋ค.
arr.filter(callback(element[, index[, array]])[, thisArg])
filter๋ฉ์๋๋ ์์ ๊ตฌ๋ฌธ์ฒ๋ผ ์์ฑํ๋ฉด๋๋ค.
์ฌ๊ธฐ์ callback์ ๊ฐ ์์๋ฅผ ์ํํ ํจ์์ด๋ค. true๊ฐ ๋ฐํ๋๋ฉด ์ ์ง๋๊ณ , false๊ฐ ๋ฐํ๋๋ฉด ๋ฒ๋ ค์ง๋ค.
callbackํจ์๋ boolean๊ฐ์ ๊ฐ์ง๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ๋ฆฌํด๊ฐ์ด true์ธ ์์๋ง ๋ชจ์์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒ์ด๋ค.
์ด๋ ์กฐ๊ฑด์ ํต๊ณผํ ์์๋ค๋ก ์ด๋ฃจ์ด์ง ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ(true์ธ ๊ฐ)ํ๊ฑฐ๋ ์ด๋ ํ ์์๋ ๊ทธ ์กฐ๊ฑด์ ๋ถํฉํ์ง ์๋๋ค๋ฉด(๋ฆฌํด์ด undefined์ด๋ฏ๋ก), ๋น ๋ฐฐ์ด์ ๋ฐํํ๋ค.
๊ทธ๋ฆฌ๊ณ , filter()๋ ๋ฐฐ์ด์ ๋ณํ์ํค์ง ์๋๋ค.
๋จผ์ , ๊ฐ๋จํ ์์์ ์ ์ฉํด๋ณด์.
function isBigEnough(value) {
return value >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered ๋ [12, 130, 44]
ํจ์์์์ ์กฐ๊ฑด์ด 10์ด์์ ์๋ง true๋ก ๋ฐํํด์ฃผ๊ณ , true์ธ ๊ฐ๋ค๋ง ๋ชจ์์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด filtered์ ๋ฃ์ด์ค๋ค.
๋ฐ๋ผ์, ์กฐ๊ฑด์ ๋ถํฉํ๋ 12, 130, 44๋ฅผ ์์๋ก ๊ฐ์ง๋ ๋ฐฐ์ด์ ๋ฐํํด์ฃผ์๋ค.
filterํจ์๋ ์ด๋ ๊ฒ ๋ฐฐ์ด์ ๊ฐ๋ค์ ๊ฑธ๋ฌ๋ด๋ ๊ฒ ๋ฟ๋ง ์๋๋ผ,
- JSON์์ ๊ฑธ๋ฌ์ง json์ ๋ง๋ค๊ธฐ ์ํด
- ๋ฐฐ์ด ๋ด์ฉ์ ๊ฒ์ํ๊ธฐ ์ํด
๋ฑ๋ฑ ์ฌ์ฉ๋๋ค.
์ด ๋ถ๋ถ๋ค์ ์์ง ๋๋ ๋ง์ด ๋ค๋ค๋ณด์ง ๋ชปํด์ ๋ด๊ฐ ๊น์ํ ์ดํด๋ฅผ ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์ด ๊ถ๊ธํ ๋ถ๋ค์ ์ด ๋ฌธ์๋ฅผ ์ฝ์ด๋ณด๋๊ฒ์ ์ถ์ฒํ๋ค.
'WEB > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ setTimeout, setInterval ๋ก ์๊ฐ ๋ณด์ฅํ๋ค๊ณ ํ ์ ์์ด? ์ด๋ป๊ฒ? (0) | 2024.01.16 |
---|---|
[JavaScript] map ํจ์ (0) | 2021.02.01 |
[JavaScript] push() & concat() (0) | 2021.01.20 |