Responsive Advertisement

JavaScript ๋ฐฐ์—ด ๋ฐ˜๋ณต ์ฒ˜๋ฆฌ: ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๊ณผ ํ™œ์šฉ

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์™€ ๊ฐ™์€ ๋ฐ˜๋ณต ๋ฉ”์„œ๋“œ๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ๋ฅผ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๋Š” ์ ์ ˆํ•œ ๋ฐ˜๋ณต ๋ฉ”์„œ๋“œ๋ฅผ ์„ ํƒํ•˜์—ฌ ์ตœ์ ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์–ด๋ณด์„ธ์š”!

๋Œ“๊ธ€ ์“ฐ๊ธฐ