2021. 10. 13. 17:15ใ๐ TIL
return ๋ด๋ถ์ ํ์ดํํจ์๊ฐ ์ด๋ค ์๋ฏธ๋ก ์์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค๊ณ , ๋ค๋ฅธ ๊ฐ๋ฐ์๋ถ์ด ์๋ ์ฝ๋์์ ์ง๋ฌธ์ ์ฃผ์ จ๋ค (๋ด๊ฐ ์ง ์ฝ๋๋ ์๋๋ค..)
const searchData = (keyWord) => {
return new Promise((resolve, reject) => {
let result = dataArr.filter(this.isMatch(keyWord));
resolve(result);
});
};
// ๋งค์นญํ๋ ํจ์ : ํค์๋๋ฅผ ํ
์คํธ ํ๋์ ๋ฃ์์ ๋, name | email | company ์ธ ๊ฐ ์ค์ ํ๋๋ผ๋ ์์ผ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํฉ๋๋ค.
const isMatch = (keyWord) => {
return (value) => {
let result =
value["name"].indexOf(keyWord) !== -1 ||
value["email"].indexOf(keyWord) !== -1 ||
value["company"].indexOf(keyWord) !== -1;
return result;
};
};
isMatch ํจ์ ๋ด๋ถ return ์์ญ์ ํ์ดํ ํจ์๊ฐ ์กด์ฌํ๋ค.
์ด๋ value ๊ฐ ์ด๋์ ๋์จ ๊ฒ์ธ์ง ํท๊ฐ๋ ธ๋๋ฐ, ํด๋น ํจ์๋ ์์ searchData ํจ์์ filter์ ์ฝ๋ฐฑํจ์์ด๋ค.
ํด๋น ์ฝ๋ฐฑํจ์๋ฅผ isMatch ๋ผ๋ ํ์ดํ ํจ์๋ก ๋นผ๋ธ ํํ์ธ๋ฐ ์ด๋ฅผ ์ถ์ถ ์ ์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ์๋์ ๊ฐ๋ค.
์ฆ value ๋ dataArr ๊ฐ์ฒด์ ์์๊ฐ ๋๋ค.
const searchData = (keyWord) => {
return new Promise((resolve, reject) => {
let result = dataArr.filter((value) => {
return (
value["name"].indexOf(keyWord) !== -1 ||
value["email"].indexOf(keyWord) !== -1 ||
value["company"].indexOf(keyWord) !== -1
);
});
resolve(result);
});
};
๋ง์ฝ ์ ์ฒ๋ผ return ๋ถ๋ถ์ ํ์ดํํจ์๊ฐ ์กด์ฌํ๋ฉด ๋ค๋ฅธ ํจ์์ ์ฝ๋ฐฑํจ์๊ฐ ์๋์ง ์์ฌํด๋ณผ ํ์๊ฐ ์๋ค.
์ถ๊ฐ ) filter() ์ map()์ ์กฐํฉ
filter ํจ์๋ฅผ ๊ณต๋ถํ๋ค ์๊ฒ๋ filter() ์ map() ์ ์กฐํฉํ์ฌ ๋ค์ค ์กฐ๊ฑด ๋ง๋ค๊ธฐ.
const guys = [
{ name: "Kyle", salary: 500000 },
{ name: "Lim", salary: 400000 },
{ name: "Kim", salary: 300000 },
{ name: "Jacky", salary: 200000 },
];
const highSalaryMan = guys
.filter((man) => man.salary > 300000)
.map((man) => man.name);
console.log(highSalaryMan);
filter ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๋ด์ด 300000 ๋ณด๋ค ๋์ ๊ฐ์ฒด๋ฅผ ์ฐพ๋ ๊ฒ์ ์ด๋ ต์ง ์๋ค.
์ฌ๊ธฐ์ ๋ํด, map() ํจ์๋ฅผ ์ ์ฉํ๋ฉด ์ฐ๋ด์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ฒด์ ์ด๋ฆ(name) ํ๋กํผํฐ๋ง ๊น๋ํ๊ฒ ๋ฝ์๋ผ ์ ์๋ค.