๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
WEB/JavaScript

[JavaScript] filter()

by mingzoo 2021. 1. 24.

๐Ÿ“–๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ ๐Ÿ“–์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐ˜๋ณต์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋ฐฐ์—ด ๊ฐ์ฒด์˜ ๋‚ด์žฅํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ, ์ด๋ฅผ ์ข€ ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค.


 

๋ฆฌ๋‹ค๊ธฐ์—์„œ 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์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด
  • ๋ฐฐ์—ด ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด

๋“ฑ๋“ฑ ์‚ฌ์šฉ๋œ๋‹ค.

์ด ๋ถ€๋ถ„๋“ค์€ ์•„์ง ๋‚˜๋„ ๋งŽ์ด ๋‹ค๋ค„๋ณด์ง€ ๋ชปํ•ด์„œ ๋‚ด๊ฐ€ ๊นŠ์ˆ™ํžˆ ์ดํ•ด๋ฅผ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์ด ๊ถ๊ธˆํ•œ ๋ถ„๋“ค์€ ์ด ๋ฌธ์„œ๋ฅผ ์ฝ์–ด๋ณด๋Š”๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

 

728x90