filter()๋ ๋ฐฐ์ด์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ง ๋จ๊ธฐ๊ณ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ ํจ์์
๋๋ค.
์ฆ, โํ์ํ ๋ฐ์ดํฐ๋ง ๊ฑธ๋ฌ๋ผ ๋โ ์ฌ์ฉํฉ๋๋ค.
1๏ธโฃ ์ซ์ ์กฐ๊ฑด์ผ๋ก ๊ฑธ๋ฌ๋ผ ๋
ํน์ ์กฐ๊ฑด(์: ์ง์, ํ์, ์์ ๋ฑ)์ ๋ง์กฑํ๋ ๊ฐ๋ง ๋จ๊ธฐ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค.
const numbers = [1, 2, 3, 4, 5, 6];
// ์ง์๋ง ๋จ๊ธฐ๊ธฐ
const even = numbers.filter(num => num % 2 === 0);
console.log(even); // [2, 4, 6]
๐ก
filter()๋ ์กฐ๊ฑด์ดtrue์ธ ์์๋ง ๋จ๊ธฐ๋ฉฐ, ์ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
2๏ธโฃ ๋ฌธ์์ด ํํฐ๋ง (๊ฒ์ ๊ธฐ๋ฅ ๋ฑ)
์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ ๋ฐ๋ผ ํน์ ๋ฌธ์์ด์ด ํฌํจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฑธ๋ฌ๋ผ ์ ์์ต๋๋ค.
const fruits = ["์ฌ๊ณผ", "๋ฐ๋๋", "ํฌ๋", "๋ธ๊ธฐ"];
const search = "๋ฐ";
const result = fruits.filter(fruit => fruit.includes(search));
console.log(result); // ["๋ฐ๋๋"]
๐ก ๊ฐ๋จํ ๊ฒ์ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ๋งค์ฐ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
3๏ธโฃ ๊ฐ์ฒด ๋ฐฐ์ด์์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ง ๋จ๊ธฐ๊ธฐ
๊ฐ์ฒด ๋ฐฐ์ด์์ ํน์ ์์ฑ๊ฐ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ ์ ์์ต๋๋ค.
const users = [
{ name: "Tom", age: 25 },
{ name: "Jane", age: 30 },
{ name: "Kim", age: 28 }
];
// 27์ธ ์ด์๋ง ๋จ๊ธฐ๊ธฐ
const adults = users.filter(user => user.age >= 27);
console.log(adults);
// [{ name: "Jane", age: 30 }, { name: "Kim", age: 28 }]
๐ก ํน์ ์กฐ๊ฑด(๋์ด, ์ ์, ์ํ ๋ฑ)์ ๋ง๋ ๊ฐ์ฒด๋ง ์ถ์ถํ ๋ ์ฌ์ฉํฉ๋๋ค.
4๏ธโฃ ๋ฐฐ์ด ์ค๋ณต ์ ๊ฑฐ (์กฐํฉ ํ์ฉ)
filter()์ indexOf()๋ฅผ ์กฐํฉํ๋ฉด ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
const numbers = [1, 2, 2, 3, 4, 4, 5];
const unique = numbers.filter((num, index, arr) => arr.indexOf(num) === index);
console.log(unique); // [1, 2, 3, 4, 5]
๐ก ๊ฐ๋จํ ์ค๋ณต ์ ๊ฑฐ๋
filter()ํ๋๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค.
5๏ธโฃ null, undefined, false ์ ๊ฑฐํ๊ธฐ (๋ฐ์ดํฐ ์ ์ )
๋ฐ์ดํฐ ๋ฐฐ์ด์์ ๋น ๊ฐ์ด๋ falsy ๊ฐ์ ํ ๋ฒ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
const data = [0, 1, null, 2, undefined, 3, false, 4, "", 5];
const cleaned = data.filter(Boolean);
console.log(cleaned); // [1, 2, 3, 4, 5]
๐ก
filter(Boolean)ํจํด์ ๋ฐ์ดํฐ ์ ์ (clean-up) ์ ๋งค์ฐ ์์ฃผ ๋ฑ์ฅํฉ๋๋ค.
๐ง ์ ๋ฆฌ โ filter()๋ฅผ ์จ์ผ ํ ๋
| ์ํฉ | ์ค๋ช | ์์ |
|---|---|---|
| ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ง ์ถ์ถ | ์ซ์, ๋ฌธ์์ด, ๊ฐ์ฒด ๋ฑ์์ ํน์ ์กฐ๊ฑด๋ง ๋จ๊น | ์ง์, ๊ฒ์ ๊ฒฐ๊ณผ ๋ฑ |
| ๊ฒ์ ๊ธฐ๋ฅ ๊ตฌํ | ๋ฌธ์์ด ํฌํจ ์ฌ๋ถ ๊ฒ์ฌ | .includes() ์กฐํฉ |
| ๊ฐ์ฒด ๋ฐฐ์ด ์กฐ๊ฑด ํํฐ๋ง | ์์ฑ๊ฐ ๊ธฐ์ค | ๋์ด 30์ธ ์ด์ ๋ฑ |
| ์ค๋ณต ์ ๊ฑฐ | indexOf() ์กฐํฉ |
[1,2,2,3] โ [1,2,3] |
| ๋ฐ์ดํฐ ์ ์ | filter(Boolean) |
falsy ๊ฐ ์ ๊ฑฐ |
๐ ๋ง๋ฌด๋ฆฌ
filter()๋ ๋ฐฐ์ด์์ ์ํ๋ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ง ๊ฑธ๋ฌ๋ผ ๋ ์ฌ์ฉํฉ๋๋ค.
๊ฒ์, ํํฐ ๊ธฐ๋ฅ, ์กฐ๊ฑด๋ถ ๋ ๋๋ง, ๋ฐ์ดํฐ ์ ์ ๋ฑ ํ์ค์ ์ธ ๊ฐ๋ฐ ์ํฉ์์ ๊ฐ์ฅ ์์ฃผ ์ฐ์ด๋ ๋ฐฐ์ด ๋ฉ์๋ ์ค ํ๋์
๋๋ค ๐ก
๋ต๊ธ ๋จ๊ธฐ๊ธฐ