
forEach λ©μλμ map λ©μλλ₯Ό μ€λ μ²μμΌλ‘ μ¬μ©ν΄λ³΄μλ€! νλ² μμ보μ!
forEach λ©μλλ μ½κ² λ§ν΄ 'forλ¬Έμ λ체ν μ μλ κ³ μ°¨ ν¨μ' μ΄λ€. κ·Έλ λ€κ³ forλ¬Έκ³Ό λκ°λ€λ λ§μ μλλ€. forEachλ©μλλ forλ¬Έκ³Ό λ¬λ¦¬ λ°°μ΄μ λͺ¨λ μμκ° μνν΄μΌνλ©°, forλ¬Έμ²λΌ break, continueλ₯Ό μ¬μ©ν μ μλ€λ μ°¨μ΄μ μ΄ μ‘΄μ¬νλ€.
const array = [1,2,3,4,5];
const result = [];
// for λ¬ΈμΌλ‘
for(let i=0; i<array.length; i++) {
result.push(numbers[i] **2); }
// forEach λ©μλ μ΄μ©
array.forEach(item => result.push(item **2));
console.log(result); // [1,4,9,16,25]
λ°°μ΄μ μμκ° 5κ° μ΄κΈ° λλ¬Έμ, μ½λ°± ν¨μλ 5λ² νΈμΆλλ€.
forEach λ©μλμ λν΄ μ°Ύλ κ³Όμ μμ μ½λ°± ν¨μλΌλ λ§μ΄ λμ, μ½λ°± ν¨μμ λν΄ λ¨Όμ κ°λ¨ν μ°Ύμ보μλ€. μ½λ°± ν¨μλ ν¨μμ λ§€κ°λ³μλ₯Ό ν΅ν΄ λ€λ₯Έ ν¨μμ λ΄λΆλ‘ μ λ¬ λλ ν¨μλ₯Ό μ½λ°± ν¨μλΌκ³ νλ€. λ κΉμ΄ μ°Ύμ보λ, λΉλκΈ°μ .. λ± μμ§ λ΄κ° μ΄ν΄νκΈ°μλ μ΄λ €μ΄ λ΄μ©μ΄ μμ΄, μΌλ¨ μ΄λ κ²λ§ μμλμλ€. (λ€μμ μ½λ°±ν¨μμ λν΄ μμΈν μμ보μ! )
λ€μ forEach λ©μλμ λν μ΄μΌκΈ°λ‘ λμμμ, μμ μ½λλ₯Ό 보면 forλ¬Έμ λ체ν μ μλ κ²μ μμμλ€.
κ·Έλ¦¬κ³ forEach λ©μλλ μ½λ°±ν¨μλ₯Ό νΈμΆνλ©΄μ μμκ°, μΈλ±μ€, this(forEach λ©μλλ₯Ό νΈμΆν λ°°μ΄ κ·Έ μ체) μ΄ 3κ°μ μΈμλ₯Ό μ λ¬νλ€.
[1,2,3,4,5].forEach((item, index, arr)=> {
console.log(`μμκ°: ${item}, μΈλ±μ€: ${index}, this:${JSON.stringify(arr)}`);
});
/*
"μμκ°: 1, μΈλ±μ€: 0, this:[1,2,3,4,5]"
"μμκ°: 2, μΈλ±μ€: 1, this:[1,2,3,4,5]"
"μμκ°: 3, μΈλ±μ€: 2, this:[1,2,3,4,5]"
"μμκ°: 4, μΈλ±μ€: 3, this:[1,2,3,4,5]"
"μμκ°: 5, μΈλ±μ€: 4, this:[1,2,3,4,5]"
*/
κ·ΈλΌ forEach λ©μλμ forλ¬Έκ³Ό κΈ°λ₯μ΄ κ±°μ λΉμ·νλ° μ΄λ€ κ²μ μ¬μ©νλ κ²μ΄ μ’μκΉ?
forEach λ©μλλ forλ¬Έμ λΉν΄ μ±λ₯μ΄ μ’μ§λ μμ§λ§ κ°λ μ±μ΄ μ’λ€.
λ°λΌμ μμκ° λ§μ λ°°μ΄μ μννκ±°λ, μκ°μ΄ λ§μ΄ 걸리λ μ½λ νΉμ λμ μ±λ₯μ΄ νμν κ²½μ°κ° μλλΌλ©΄, forλ¬Έ λμ forEach λ©μλλ₯Ό μ¬μ©ν κ²μ κΆμ₯νλ€.-λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive-
map λ©μλλ μκΈ°μμ μ νΈμΆν λ°°μ΄μ λͺ¨λ μμλ₯Ό μννλ©΄μ, μ½λ°± ν¨μλ₯Ό λ°λ³΅ νΈμΆνκ³ , μ½λ°± ν¨μμ λ°νκ°λ€λ‘ ꡬμ±λ μλ‘μ΄ λ°°μ΄μ λ°ννλ κ²μ΄λ€.
const numbers = [1,4,9];
const result = numbers.map(item => Math.sqrt(item));
console.log(result); // map λ©μλμμ μλ‘μ΄ λ°°μ΄ λ°ν. [1,2,3]
console.log(numbers); // μλ³Έ λ°°μ΄μ λ³κ²½νμ§ μλλ€.
κ·Έλ¦¬κ³ forEach λ©μλμ²λΌ μ½λ°±ν¨μλ₯Ό νΈμΆνλ©΄μ μμκ°, μΈλ±μ€, this(mapλ©μλλ₯Ό νΈμΆν λ°°μ΄ κ·Έ μ체) μ΄ 3κ°μ μΈμλ₯Ό μ λ¬νλ€.
[1,2,3].map((item, index, arr)=> {
console.log(`μμκ°: ${item}, μΈλ±μ€:${index}, this: ${JSON.stringify(arr)}`);
return item;
});
/*
"μμκ°: 1, μΈλ±μ€:0, this: [1,2,3]"
"μμκ°: 2, μΈλ±μ€:1, this: [1,2,3]"
"μμκ°: 3, μΈλ±μ€:2, this: [1,2,3]"
*/
μ΄ λμ μ°¨μ΄μ μ forEach λ©μλλ undefined λ₯Ό λ°ννκ³ , map λ©μλλ μ½λ°± ν¨μμ λ°νκ°λ€λ‘ ꡬμ±λ μλ‘μ΄ λ°°μ΄μ λ°ννλ€λ μ°¨μ΄μ μ΄ μλ€.
μ½κ² λ§ν΄ forEach λ©μλλ λ°°μ΄ μμλ§λ€ μ½λ°± ν¨μλ₯Ό μ€ννκ³ (μ¦ νλ² μ€ν), μ무 κ°λ λ°ννμ§ μμ§λ§, map λ©μλλ λͺ¨λ κ°κ°μ μμλ€μ΄ ν¨μλ₯Ό νΈμΆνκ³ κ°μ λ³κ²½νμ¬, μλ‘μ΄ λ°°μ΄μ λ°ννλ€λ μ°¨μ΄κ° μλ€.