๊ณ ์ฐจํจ์ ๋ฌธ์ :
์๋ ์ฝ๋๋ฅผ reduce๋ฉ์๋ ํ ๋ฒ๋ง ์ฌ์ฉํ ์ฝ๋๋ก ๋ณ๊ฒฝํ์ฌ ์ค์ค๋ก ์์ฑํ๊ณ , ์ง์ ์ค๋ช ํ ๋ด์ฉ์ ์ ์ด์ฃผ์ธ์.
const filterMaped = arr.filter(x => x % 2 !== 0).map(x => x * 2);
console.log(filterMaped); // [2, 6, 10]
reduce๋ฅผ ์ฌ์ฉํ ์ฝ๋๋ก ๋ณ๊ฒฝํ๊ธฐ์ ์์ ๋๋ ๋จผ์ ์ด๋ค ๋ฐฐ์ด์ด์๊ธธ๋ ์ฝ์๋ก๊ทธ์ [2, 4, 10]์ด๋ผ๋ ๋ฐฐ์ด์ด ์ฐํ๋์ง๋ฅผ ์๊ฐ ํด ๋ณด์๋ค.
ํํฐ์ ๋งต์ ๊ฑฐ์ณ๊ฐ ๊ณผ์ ์ ๋ณด๋ arr = [1, 2, 3, 4, 5] ๋ผ๊ณ ์ง์ํ๋ค.
let resultArr = [];
const result = arr.reduce(function (acc, cur) {
if (cur % 2 === 1) {
resultArr.push(cur * 2);
}
}, 0);
๋๋ฒ๊น ์ ํด๋ณด๋ฉด ์๊ฒ ์ง๋ง acc ,cur ์์ผ๋ก ์ ์ด๋ณด๋ฉด
์ด๋ฐ์์ผ๋ก ๊ฐ์ด ๋ค์ด๊ฐ๋๊ฑธ ์ ์ ์๋ค. ๋๋ ๋์ ๊ฐ์ ์ ์ฉ์ํค์ง ์๊ณ cur(ํ์ฌ๊ฐ)๋ง ๋น ๋ฐฐ์ด์ push๋ฅผ ํด์ฃผ๋ ์์ผ๋ก reduce์ฝ๋๋ก ๋ณ๊ฒฝ์์ผ๋ดค๋ค. ๋ฐ๋ณต๋ฌธ๊ณผ ๋น์ทํ ํํ๋ก ๋ง๋ค์ด๋ณด์๋ค.
์ด ๊ณต๋ถ๋ฅผ ํตํด ๋๋ reduce ๋ฉ์๋๋ ํ์คํ ๋ฐฐ์ด์ ์์๋ค์ ํ๋์ฉ ๋๋ฉฐ(๋ฐ๋ณต๋ฌธ๊ณผ ๋น์ทํ๋ค) ์ด์ ์ฝ๋ฐฑ์ ๋ฆฌํด๊ฐ๊ณผ ํ์ฌ ์ฝ๋ฐฑ์ ๋ฆฌํด๊ฐ์ ๊ฐ์ง๊ณ ํ์ฉํ๊ธฐ์ ์ ๋ฆฌํ ๋ฉ์๋๋ผ๊ณ ์๊ฐํ๋ค.
๋ฐ๋ณต๋ฌธ ๋ฌธ์ :
์๋ฅผ ์ ๋ ฅ๋ฐ์ 2๋ถํฐ ํด๋น ์๊น์ง์ ์์(prime number)๋ค์ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
์ฃผ์์ฌํญ : ์ด์ค ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์์
let output = listPrimes(18);
console.log(output); // ---> '2-3-5-7-11-13-17'
let result = "2";
for (let i = 3; i <= num; i += 2) {
let isReady = true;
let isPrime = parseInt(Math.sqrt(i));
for (let j = 3; j <= isPrime; j += 2) {
if (i % j === 0) {
isReady = false;
break;
}
}
if (isReady) {
result = `${result}-${i}`;
}
}
return result;
์ด๋ฌํ ์์ผ๋ก ์ฝ๋๋ฅผ ๋ง๋ค์ด ๋ณผ ์ ์๋ค.
๋ด๊ฐ ์๊ฐํ์ ๋, ๋ฐ๋ณต๋ฌธ ์๊ณ ๋ฆฌ์ฆ ์ค์์๋ ๊ฐ์ฅ ์ด๋ ค์ ๋ ๋ฌธ์ ๋ก ๊ผฝํ๋ค.
์์๋ฅผ ๊ฑธ๋ฌ๋ด์ผ ํ๋ ์ , ๊ทธ๋ฆฌ๊ณ ์ด์ค ๋ฐ๋ณต๋ฌธ์ ์ต์ํ์ง ์์๋ ์ ์์ ๋ง์ด ํ๋ค์๋ค.
true๊ฐ์ for๋ฌธ ๋ฐ์๋ค๊ฐ ํ ๋นํด์ ์ฝ์ง์ ํ์๊ณ , ์ ๊ณฑ๊ทผ ๊ฐ์ ๊ตฌํด๋๊ณ parseInt๋ฅผ ์ฐ์ง์์์ ์ฝ์ง์ ๋ง์ด ํ์๋ค. ์ฒ์ ๋ฌธ์ ๋ฅผ ๋ดค์ ๋๋ ์ด๋ป๊ฒ ์ ๊ทผํด์ผ ๋๋์ง ์กฐ์ฐจ ๋ชฐ๋๋ ๊ฒ ๊ฐ๋ค.
์ด์ ๋ ์ฌ๋ฌ๋ฒ ๋ณต์ต๋์ ์์ ํ ๋์ ์ฝ๋๋ก ๋ง๋ค์ด๋๋ค. ์ด ๋ฌธ์ ๋ง ์๋ฒฝํ๊ฒ ํ์ ํ๋ค๋ฉด ๋ค๋ฅธ ์ด์ค ๋ฐ๋ณต๋ฌธ ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ๋ ์ง์ฅ์ด ์์ ๊ฒ์ผ๋ก ์ฌ๊ฒจ์ง๋ค.
๐ ๋ด์ผ์ TIW(today I Will)
๋ฐฐ์ด, ๊ฐ์ฒด, ๊ณ ์ฐจํจ์!