Array νλ‘ν νμ μ λ©μλλ€ μ 리
2024 / 01 / 01 (μ)
μν΄ λ³΅ λ§μ΄ λ°μΌμΈμ ππ»ββοΈ
JSX λ΄λΆμμ λ°°μ΄μ μ‘°μν΄ λ°λ‘ μνλ JSXλ₯Ό λ°ννλ νΉμ±μ
map
filter
reduce
μ΄ 3κ°μ λ©μλκ° μμ£Ό μ°μΈλ€.
κ·Έλ¦¬κ³ μ΄ λ©μλλ κΈ°μ‘΄ λ°°μ΄μ κ°μ 건λλ¦¬μ§ μκ³ μλ‘μ΄ κ°μ λ§λ€μ΄ λ΄κΈ° λλ¬Έμ κΈ°μ‘΄ κ°μ΄ λ³κ²½λ κ±±μ μμ΄ μμ νκ² μ¬μ©ν μ μλ€.
μΆκ°μ μΌλ‘ forEach
κΉμ§ ν¬ν¨ν΄μ μκ°ν λ©μλλ€μ ES5μμλΆν° μ¬μ©ν λ¬Έλ²μ΄κΈ° λλ¬Έμ λ³λμ νΈλμ€νμΌμ΄λ ν΄λ¦¬ν μμ΄λ λΆλ΄ μμ΄ μ¬μ©ν μ μλ€.
Array.prototype.map
μ μΈμλ‘ μ λ¬λ°μ λ°°μ΄κ³Ό λκ°μ κΈΈμ΄μ μλ‘μ΄ λ°°μ΄μ λ°ννλ λ©μλλ€. λ°°μ΄μ κ° μμ΄ν
μ μννλ©΄μ κ° μμ΄ν
μ μ½λ°±μΌλ‘ μ°μ°ν κ²°κ³Όλ‘ κ΅¬μ±λ μλ‘μ΄ λ°°μ΄μ λ§λ€ μ μλ€.
<script>
const arr = [1,2,3,4,5]
const doubleArr = arr.map((item) => item * 2)
// [2,4,6,8,10]
</script>
리μ‘νΈμμλ μ£Όλ‘ νΉμ λ°°μ΄μ κΈ°λ°μΌλ‘ μ΄λ ν 리μ‘νΈ μμλ₯Ό λ°ννκ³ μ ν λ λ§μ΄ μ¬μ©νλ€.
<script>
const arr = [1,2,3,4,5]
const Elements = arr.map((item) => {
return <Fragment key={item}>{item}</Fragment>
})
</script>
Array.prototype.filter
λ©μλλ μ½λ°± ν¨μλ₯Ό μΈμλ‘ λ°λλ°,μ΄ μ½λ°± ν¨μμμ
truthy 쑰건μ λ§μ‘±νλ κ²½μ°μλ§ ν΄λΉ μμλ₯Ό λ°ννλ λ©μλλ€.
λ§ κ·Έλλ‘ νν°λ§νλ μν μ λ©μλμ΄λ©°,filterμ κ²°κ³Όμ λ°λΌ μλ³Έ λ°°μ΄μ κΈΈμ΄ μ΄νμ μλ‘μ΄ λ°°μ΄μ΄ λ°νλλ€. μ¦, μμ mapκ³Ό λ€λ₯΄κ² κ°μ ν¬κΈ°μ λ°°μ΄μ΄ λμ€μ§ μμ μλ μλ€. μ£Όλ‘ κΈ°μ‘΄ λ°°μ΄μ λν΄ μ΄λ ν 쑰건μ λ§μ‘±νλ μλ‘μ΄ λ°°μ΄μ λ°νν λ μ°μΈλ€.
<script>
const arr = [1,2,3,4,5]
const evenArr = arr.filter((item) => item % 2 === 0)
// [2 , 4]
</script>
Array.prototype.reduce
λ map , filter λ©μλμ λ€λ₯΄κ² μ‘°κΈ λ³΅μ‘ν λ©μλλ€.
μ²μ JSλ₯Ό μ ν μ΄λ³΄ κ°λ°μλ€μ΄ νν ν·κ°λ¦¬λ λ©μλλΌκ³ λ νλ€.
μ΄ λ©μλλ μ½λ°± ν¨μμ ν¨κ» μ΄κΉκ°μ μΆκ°λ‘ μΈμλ₯Ό λ°λλ°, μ΄ μ΄κΉκ°μ λ°λΌ λ°°μ΄μ΄λ κ°μ²΄,λλ κ·Έ μΈμ λ€λ₯Έ 무μΈκ°λ₯Ό λ°νν μ μλ λ©μλλ€.
<script>
const arr = [1,2,3,4,5]
const sum = arr.reduce((result , item) => {
return result + item
},0//μ΄κΉκ°)
// 15
</script>
λ¨Όμ 0μ reduceμ κ²°κ³Όλ₯Ό λμ ν μ΄κΉκ°μ΄λ€. κ·Έλ¦¬κ³ reducer μ½λ°± ν¨μμ 첫 λ²μ§Έ μΈμλ μμ μ μΈν μ΄κΉκ°μ νμ¬κ°μ μλ―Ένκ³ ,λ λ²μ§Έ μΈμλ νμ¬ λ°°μ΄μ μμ΄ν μ μλ―Ένλ€.μ¦, μ΄ μ½λ°±μ λ°νκ°μ κ³μν΄μ μ΄κΉκ°μ λμ νλ©΄μ μλ‘μ΄ κ°μ λ§λ λ€κ³ λ³Ό μ μλ€.
reduceλ λ¨μν ν©κ³λ₯Ό ꡬνλ κ²λΏλ§ μλλΌ λ°°μ΄μ μνλ νλμ κ°μ²΄λ‘ λ³ννλ λ± λ€μν μμ μμ μ¬μ©λλ€. κ·Έλ¦¬κ³ filterμ mapμ μλμ reduce νλλ‘ κ΅¬νν μ μλλ°,reduceλ μμ λ λ©μλμ λΉν΄ μ¬μ©λ²μ΄ 볡μ‘ν΄ μ½λκ° μ§κ΄μ μ΄μ§ μλ€.λ°λΌμ μ§§μ μ½λλΌλ©΄ filterμ mapμ κ°κ° νμ©ν΄ ꡬννλκ²λ λμ λ°λΌμ λμμ§ μλ€κ³ νλ€.
Array.prototype.forEach
λ μ½λ°± ν¨μλ₯Ό λ°μ λ°°μ΄μ μννλ©΄μ λ¨μν κ·Έ μ½λ°± ν¨μλ₯Ό μ€ννκΈ°λ§ νλ λ©μλλ€.
<script>
const arr = [1,2,3,4,5]
arr.forEach((item) => console.log(item))
// 1,2,3,4,5
</script>
리μ‘νΈ μ½λ λ΄λΆμμ map,filter,reduceκ° λ리 μ¬μ©λλ©΄μ forEachλ μμ£Ό μ¬μ©λλ κ²μ λ³Ό μ μλ€. κ·Έλ¬λ forEachλ μ¬μ©ν λ μ£Όμκ° νμν λ©μλλΌκ³ νλ€.
λ¨Όμ forEachλ μλ¬΄λ° λ°νκ°μ΄ μλ€. λ¨μν μ½λ°± ν¨μλ₯Ό μ€νν λΏ,mapκ³Ό κ°μ΄ κ²°κ³Όλ₯Ό λ°ννλ μμ
μ μννμ§ μλλ€.
μ¦, μ½λ°± ν¨μ λ΄λΆμμ μ무리 λ°νν΄λ λͺ¨λ μλ―Έ μλ κ°μ΄ λλ€κ³ νλ€.
forEachμ λ°νκ°μ undefinedλ‘ μλ―Έ μλ€λ κ²μ μμλμ΄μΌ νλ€.
λ ν κ°μ§ μ£Όμν μ μ forEachλ μ€νλλ μκ° μλ¬λ₯Ό λμ§κ±°λ νλ‘μΈμ€λ₯Ό μ’ λ£νμ§ μλ μ΄μ μ΄λ₯Ό λ©μΆ μ μλ€λκ²μ΄λ€.break,return, 그무μμ μ΄μ©ν΄λ λ°°μ΄ μνλ₯Ό λ©μΆ μ μλ€κ³ νλ€.
β‘οΈ λ€μκΈμμλ μΌν 쑰건 μ°μ°μμ λν΄ μ΄ν΄λ³΄μ.