JavaScript์์ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋์ ๋๋ค. ๋ฐฐ์ด์ ์์๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ๋ณํํ๊ธฐ ์ํด ๋ฐ๋ณต(iteration)์ ๋งค์ฐ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. JavaScript๋ ๋ฐฐ์ด์ ๋ฐ๋ณตํ๋ ๋ค์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ฉฐ, ๊ฐ๊ฐ์ ๋ฉ์๋๋ ํน์ ์ํฉ์ ๋ฐ๋ผ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๊ธ์์๋ JavaScript์์ ๋ฐฐ์ด์ ๋ฐ๋ณตํ๋ ๋ค์ํ ๋ฉ์๋๋ฅผ ์๊ฐํ๊ณ , ๊ทธ ํ์ฉ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. for
๋ฃจํ: ์ ํต์ ์ธ ๋ฐฐ์ด ๋ฐ๋ณต
JavaScript์์ ๋ฐฐ์ด์ ๋ฐ๋ณตํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ for
๋ฃจํ์
๋๋ค. for
๋ฃจํ๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์๋ฅผ ๋ฐ๋ณตํ ์ ์์ผ๋ฉฐ, ๊ฐ๋จํ ๋ฐ๋ณต ์์
์ ์ ์ฉํฉ๋๋ค.
const fruits = ['apple', 'banana', 'cherry'];
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
// ๊ฒฐ๊ณผ: 'apple', 'banana', 'cherry'
for
๋ฃจํ๋ ๋ฐฐ์ด์ ๊ธธ์ด(fruits.length
)๋งํผ ๋ฐ๋ณตํ๋ฉฐ, ๊ฐ ์์์ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ ์ ์์ต๋๋ค. ์ ํต์ ์ธ ๋ฐฉ๋ฒ์ด์ง๋ง, ์ต๊ทผ์๋ ๋ ๊ฐ๊ฒฐํ ๋ฐ๋ณต ๋ฉ์๋๋ค์ด ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
2. forEach()
: ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ํจ์ ์คํ
forEach()
๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋ํด ์ฃผ์ด์ง ํจ์๋ฅผ ํ ๋ฒ์ฉ ์คํํ๋ ๋ฐ๋ณต ๋ฉ์๋์
๋๋ค. ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๊ณ , ๋งค๋ฒ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ํ์ธํ ํ์๊ฐ ์์ด ํธ๋ฆฌํฉ๋๋ค.
const fruits = ['apple', 'banana', 'cherry'];
fruits.forEach((fruit, index) => {
console.log(`${index}: ${fruit}`);
});
// ๊ฒฐ๊ณผ: '0: apple', '1: banana', '2: cherry'
์ ์ฝ๋์์๋ forEach()
๋ฅผ ์ฌ์ฉํด ๊ฐ ์์์ ๊ทธ ์ธ๋ฑ์ค๋ฅผ ์ถ๋ ฅํ๊ณ ์์ต๋๋ค. forEach()
๋ ๋ฐฐ์ด์ ์์๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋จ์ํ ์ฒ๋ฆฌํ ๋ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
3. map()
: ๋ฐฐ์ด์ ๋ณํํ์ฌ ์ ๋ฐฐ์ด ์์ฑ
map()
๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ๋ณํํ์ฌ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค. ๊ธฐ์กด ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉฐ, ๊ฐ ์์์ ๋ํ ๋ณํ ์์
์ด ํ์ํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
const numbers = [1, 2, 3, 4, 5];
// ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ์ ๊ณฑํ ์๋ก์ด ๋ฐฐ์ด ์์ฑ
const squares = numbers.map(num => num * num);
console.log(squares); // ๊ฒฐ๊ณผ: [1, 4, 9, 16, 25]
์ ์์ ์์๋ map()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๋ฐฐ์ด์ ๊ฐ ์ซ์๋ฅผ ์ ๊ณฑํ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ์ต๋๋ค. ๊ธฐ์กด ๋ฐฐ์ด์ ์ ์ง๋๋ฉฐ, ๋ณํ๋ ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.
4. filter()
: ์กฐ๊ฑด์ ๋ง๋ ์์๋ก ์ ๋ฐฐ์ด ์์ฑ
filter()
๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ์กฐ๊ฑด์ ๋ฐ๋ผ ํํฐ๋งํ ํ, ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ค๋ก ์ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
const numbers = [1, 2, 3, 4, 5];
// ์ง์๋ง ํํฐ๋งํ์ฌ ์ ๋ฐฐ์ด ์์ฑ
const evens = numbers.filter(num => num % 2 === 0);
console.log(evens); // ๊ฒฐ๊ณผ: [2, 4]
์ ์ฝ๋์์๋ filter()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ง์๋ง ํํฐ๋งํ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ์ต๋๋ค. ๋ฐฐ์ด์์ ํน์ ์กฐ๊ฑด์ ๋ง๋ ์์๋ง ์ถ์ถํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
5. reduce()
: ๋ฐฐ์ด์ ๋์ ํ์ฌ ๋จ์ผ ๊ฐ์ผ๋ก ์ถ์
reduce()
๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ๋์ (accumulate)ํ์ฌ ํ๋์ ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ด ๋ฉ์๋๋ ๋ฐฐ์ด์ ํฉ๊ณ, ํ๊ท , ์ต๋๊ฐ ๋ฑ์ ๊ฐ์ ๊ณ์ฐํ ๋ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
const numbers = [1, 2, 3, 4, 5];
// ๋ฐฐ์ด์ ํฉ๊ณ ๊ณ์ฐ
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // ๊ฒฐ๊ณผ: 15
์ ์์ ์์๋ reduce()
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ๋ชจ๋ ์ซ์๋ฅผ ๋ํด ํฉ๊ณ๋ฅผ ๊ณ์ฐํ์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์ธ์๋ ๋์ ๊ฐ(accumulator
), ๋ ๋ฒ์งธ ์ธ์๋ ํ์ฌ ์์(currentValue
)์
๋๋ค.
6. some()
์ every()
: ์กฐ๊ฑด ์ถฉ์กฑ ์ฌ๋ถ ํ์ธ
some()
๋ฉ์๋๋ ๋ฐฐ์ด์ ์์ ์ค ํ๋๋ผ๋ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ํ์ธํ๋ฉฐ, ๋ง์กฑํ๋ฉด true
๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐ๋ฉด every()
๋ ๋ฐฐ์ด์ ๋ชจ๋ ์์๊ฐ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
const numbers = [1, 2, 3, 4, 5];
// ๋ฐฐ์ด ์ค ํ๋๋ผ๋ ์ง์์ธ์ง ํ์ธ
const hasEven = numbers.some(num => num % 2 === 0);
console.log(hasEven); // ๊ฒฐ๊ณผ: true
// ๋ฐฐ์ด์ ๋ชจ๋ ์์๊ฐ ์์์ธ์ง ํ์ธ
const allPositive = numbers.every(num => num > 0);
console.log(allPositive); // ๊ฒฐ๊ณผ: true
์ ์์ ์์๋ some()
์ ์ฌ์ฉํด ๋ฐฐ์ด์ ํ๋๋ผ๋ ์ง์๊ฐ ์๋์ง ํ์ธํ๊ณ , every()
๋ฅผ ์ฌ์ฉํด ๋ชจ๋ ์์๊ฐ ์์์ธ์ง ํ์ธํ์ต๋๋ค.
7. for...of
: ๋ฐฐ์ด ์์ ๋ฐ๋ณต
for...of
๋ฃจํ๋ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ๋ฐ๋ณตํ ์ ์๋ ๊ฐ๊ฒฐํ ๊ตฌ๋ฌธ์ ์ ๊ณตํฉ๋๋ค. ์ธ๋ฑ์ค ๋์ ์์ ์์ฒด์ ์ง์คํ์ฌ ๋ฐ๋ณต ์์
์ ์ํํ ๋ ์ ์ฉํฉ๋๋ค.
const fruits = ['apple', 'banana', 'cherry'];
for (const fruit of fruits) {
console.log(fruit);
}
// ๊ฒฐ๊ณผ: 'apple', 'banana', 'cherry'
for...of
๋ ๊ฐ๋จํ๊ฒ ๋ฐฐ์ด์ ์์์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ๋ฐ๋ณต ์์
์ ๊ฐ๊ฒฐํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
8. for...in
: ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๋ณต
for...in
๋ฃจํ๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๋ณตํฉ๋๋ค. ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์
์ ์ํํ ๋ ์ ์ฉํ์ง๋ง, ๋ฐฐ์ด ์์ ์์ฒด๋ฅผ ๋ฐ๋ณตํ ๋๋ for...of
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ ํฉํฉ๋๋ค.
const fruits = ['apple', 'banana', 'cherry'];
for (const index in fruits) {
console.log(`${index}: ${fruits[index]}`);
}
// ๊ฒฐ๊ณผ: '0: apple', '1: banana', '2: cherry'
for...in
์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ์ ๊ทผํ ์ ์๋ ๊ตฌ๋ฌธ์ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ๊ฐ์ฒด์ ๋ฐฐ์ด์ ๊ตฌ๋ถํ ๋ ์ฃผ์๊ฐ ํ์ํ๋ฉฐ, ๋ฐฐ์ด์ ์์์ ์ ๊ทผํ ๋๋ forEach
๋ for...of
๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ฒฐ๋ก
JavaScript์์ ๋ฐฐ์ด์ ๋ฐ๋ณตํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ํฉ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. forEach()
๋ ๊ฐ๋จํ ๋ฐ๋ณต์, map()
๊ณผ filter()
๋ ๋ณํ๊ณผ ํํฐ๋ง์ ์ ํฉํ๋ฉฐ, reduce()
๋ ๋ฐฐ์ด์ ํ๋์ ๊ฐ์ผ๋ก ์ถ์ํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ด์ธ์๋ some()
, every()
, for...of
์ ๊ฐ์ ๋ฐ๋ณต ๋ฉ์๋๋ฅผ ์ ํ์ฉํ๋ฉด ๋ฐฐ์ด ๋ฐ์ดํฐ๋ฅผ ๋์ฑ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ์ ์๊ตฌ ์ฌํญ์ ๋ง๋ ์ ์ ํ ๋ฐ๋ณต ๋ฉ์๋๋ฅผ ์ ํํ์ฌ ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ด๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ