๊ด€๋ฆฌ ๋ฉ”๋‰ด

bom's happy life

[JS] for๋ฌธ๊ณผ forEach๋ฌธ์˜ ์ฐจ์ด? + "-1๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ์ด์œ " ๋ณธ๋ฌธ

Deveolpment Study๐Ÿ—‚๏ธ/Javascript

[JS] for๋ฌธ๊ณผ forEach๋ฌธ์˜ ์ฐจ์ด? + "-1๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ์ด์œ "

bompeach 2023. 6. 1. 11:18

'forEach'์™€ 'for' ๋ฃจํ”„๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ˜๋ณต๋ฌธ ์ด๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค.

 

1. ๊ตฌ๋ฌธ : 'forEach'๋Š” ๋ฉ”์„œ๋“œ ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด์— ๋‚ด์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›๋Š”๋‹ค. 'for' ๋ฃจํ”„๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐ˜๋ณต๋ฌธ ๊ตฌ๋ฌธ์œผ๋กœ, ๋ฐ˜๋ณต ์กฐ๊ฑด๊ณผ ๋ฐ˜๋ณต ๋ณ€์ˆ˜ ๋“ฑ์„ ์ง์ ‘ ์ œ์–ดํ•œ๋‹ค.

 

2. ์ธ๋ฑ์Šค ๋ฐ ์š”์†Œ : 'forEach'์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ์”ฉ ํ˜ธ์ถœ๋œ๋‹ค. ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ํ˜„์žฌ ์š”์†Œ, ํ˜„์žฌ ์ธ๋ฑ์Šค, ์›๋ณธ ๋ฐฐ์—ด์„ ์ธ์ž๋กœ ๋ฐ›๋Š”๋‹ค. 'for' ๋ฃจํ”„๋Š” ๋ฐ˜๋ณต ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด ์š”์†Œ์— ์ ‘๊ทผํ•œ๋‹ค.

 

3. ์ค‘๋‹จ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ : 'forEach'๋Š” ๋ฐ˜๋ณต ๋„์ค‘์—๋Š” ์ค‘๋‹จํ•  ์ˆ˜ ์—†๋‹ค. ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ์— ๋Œ€ํ•ด ์‹คํ–‰๋œ๋‹ค. 'for' ๋ฃจํ”„์—์„œ๋Š” 'break' ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต์„ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

4. ์„ฑ๋Šฅ : ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ 'for' ๋ฃจํ”„๊ฐ€ ๋” ๋น ๋ฅด๋‹ค. 'forEach' ๋ฉ”์„œ๋“œ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐ˜๋ณต ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐ˜๋ณต ๋„์ค‘์— ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ, ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ„๋‹จํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” 'forEach' ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•˜๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค. ๋ฐ˜๋ฉด์— ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ๋‚˜ ๋ฐ˜๋ณต ๋„์ค‘์— ์ค‘๋‹จ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” 'for' ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ ํ•ฉํ•˜๋‹ค.

 

 


 

 

์œ„์—์„œ ๋งํ•˜๋Š” ๋ฐ˜๋ณต ๋ณ€์ˆ˜๋ž€?

 

๋ฐ˜๋ณต ๋ณ€์ˆ˜๋Š” ๋ฐ˜๋ณต๋ฌธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋กœ, ๋ฐ˜๋ณต ๊ณผ์ •์—์„œ ํ˜„์žฌ ๋ฐ˜๋ณต์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ์ด ๋ณ€์ˆ˜๋Š” ๋ฐ˜๋ณต๋ฌธ ๋‚ด์—์„œ ์กฐ๊ฑด ๊ฒ€์‚ฌ๋‚˜ ๋ฐฐ์—ด ์ ‘๊ทผ ๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค. 'for' ๋ฃจํ”„์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 'i'๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ๋ฐ˜๋ณต ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ด€๋ก€๊ฐ€ ์žˆ๋‹ค. 

 

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์€ 'for'๋ฃจํ”„์—์„œ 'i'๋ฅผ ๋ฐ˜๋ณต ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์‹œ์ด๋‹ค.

for (var i = 0; i < 5; i++) {
  console.log(i);
}

 

์œ„์˜ ์˜ˆ์‹œ์—์„œ 'i'๋Š” 0์—์„œ ์‹œ์ž‘ํ•˜์—ฌ 5๋ณด๋‹ค ์ž‘์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉฐ, ๊ฐ ๋ฐ˜๋ณต๋งˆ๋‹ค 'i'์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ˜์†”์—๋Š” 0๋ถ€ํ„ฐ 4๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

๋ฐ˜๋ณต ๋ณ€์ˆ˜๋Š” ๋ฐ˜๋ณต๋ฌธ์˜ ์กฐ๊ฑด ๊ฒ€์‚ฌ์— ์‚ฌ์šฉ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ํŠน์ • ๊ฐ’์„ ์ฐพ์„ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 'for' ๋ฃจํ”„์™€ ๋ฐ˜๋ณต ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

var arr = [1, 2, 3, 4, 5];
var target = 3;
var index = -1; 

for (var i = 0; i < arr.length; i++) {
  if (arr[i] === target) {
    index = i;
    break;
  }
}

console.log(index);

์œ„์˜ ์˜ˆ์‹œ์—์„œ arr ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ target ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ๋Š”๋‹ค. ๋ฐ˜๋ณต ๋ณ€์ˆ˜ i๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•˜๊ณ , ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์ธ๋ฑ์Šค๋ฅผ index ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค. ์ดํ›„ break ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต์„ ์ค‘๋‹จํ•œ๋‹ค. ์ฝ˜์†”์—๋Š” ์ผ์น˜ํ•˜๋Š” ์š”์†Œ์˜ ์ธ๋ฑ์Šค์ธ 2๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

์ด์ฒ˜๋Ÿผ ๋ฐ˜๋ณต ๋ณ€์ˆ˜๋Š” ๋ฐ˜๋ณต ๊ณผ์ •์—์„œ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

 

 


 

 

+ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐ”๋กœ ์œ„์˜ ์ฝ”๋“œ์—์„œ var index = -1; ์ด๋ผ๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ณด์•˜๋‹ค.

 

๋ฐฐ์—ด์—์„œ ํŠน์ • ๊ฐ’์„ ์ฐพ์„ ๋•Œ ํ•ด๋‹น ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘์— ํ•˜๋‚˜์ด๋‹ค.

 

์œ„์˜ ์˜ˆ์‹œ์—์„œ 'index' ๋ณ€์ˆ˜๋ฅผ ๋ฐฐ์—ด 'arr' ์—์„œ 'target' ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ดˆ๊ธฐ๊ฐ’์„ -1๋กœ ์„ค์ •ํ•˜๋Š” ์ด์œ ๋Š”, ๋งŒ์•ฝ ์ผ์น˜ํ•˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด 'index' ๊ฐ’์ด -1๋กœ ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Š” ์ผ์น˜ํ•˜๋Š” ์š”์†Œ๊ฐ€ ์—†์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œ์‹œ์ด๋‹ค.

 

๋งŒ์•ฝ 'index' ๋ณ€์ˆ˜๋ฅผ -1๋กœ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š๊ณ , ๋ฐ˜๋ณต๋ฌธ ์ด์ „์— 'var index;' ์™€ ๊ฐ™์ด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด, 'index' ๋Š” ์ž๋™์œผ๋กœ 'undefined'๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. ์ดํ›„ ์ผ์น˜ํ•˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ 'index' ๊ฐ’์€ 'undefined' ์ƒํƒœ๋กœ ์œ ์ง€๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ดˆ๊ธฐ๊ฐ’์„ ๋ช…์‹œ์ ์œผ๋กœ -1๋กœ ์„ค์ •ํ•จ์œผ๋กœ์จ, 'index' ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.