reduce()
λ©μλ
reduce()
λ©μλλ λ°°μ΄μ κ° μμμ λν΄ μ£Όμ΄μ§ 리λμ(reducer) ν¨μλ₯Ό μ€ννκ³ , νλμ κ²°κ³Όκ°μ λ°ννλ λ©μλμ΄λ€.
μΆμ² : MDN
리λμ ν¨μλ 4κ°μ μΈμκ°μ κ°μ§λ€.
1. λμ°κΈ° (acc)
2. νμ¬κ° (cur)
3. νμ¬ μΈλ±μ€ (idx)
4. μ΄κΈ°κ° (src)
리λμ ν¨μμ λ°νκ°μ λμ°κΈ°μ ν λΉνκ³ λμ°κΈ°λ μν μ€ μ μ§λλ―λ‘ κ²°κ΅ μ΅μ’
νλμ κ°μ΄ λλ€!
reduce()
ν¨μλ λ€μκ³Ό κ°μ ννλ‘ μ¬μ©ν μ μλ€. (μ΄κΈ°κ°μ μλ΅ν μ μλ€)
λ°°μ΄.reduce((λμ°κΈ°, νμ¬κ°, νμ¬μΈλ±μ€, μμ) => {
return κ²°κ³Ό
}, μ΄κΈ°κ°);
const list = [1, 2, 3, 4, 5];
const result = list.reduce((acc, cur, idx) => {
console.log(idx, acc, cur);
return acc + cur;
});
console.log("κ²°κ³Ό: ", result);
// κ²°κ³Ό
1 1 2
2 3 3
3 6 4
4 10 5
κ²°κ³Ό: 15
μ΄κΈ°κ°μ μ¨μ£Όμ§ μμΌλ©΄ λ°°μ΄μ 첫λ²μ§Έκ°μ μ΄κΈ°κ°μ κ°λλ€!
const list = [1, 2, 3, 4, 5];
const result = list.reduce((acc, cur, idx) => {
console.log(idx, acc, cur);
return acc + cur;
}, 0);
console.log("κ²°κ³Ό: ", result);
// κ²°κ³Ό
0 0 1
1 1 2
2 3 3
3 6 4
4 10 5
κ²°κ³Ό: 15
λΏλ§ μλλΌ reduce()
λ λ°°μ΄μ κ°μ²΄λ‘ λ³ννλλ°λ μ¬μ©ν μ μλ€.
idx
λ₯Ό ν€κ°μ κ°λ κ°μ²΄μ΄λ€.
const names = ["κΉ", "μ΄", "λ°", "μ ", "μ΅"];
const result = names.reduce((acc, cur, idx) => {
acc[idx] = cur;
return acc;
}, {});
console.log(result);
// { '0': 'κΉ', '1': 'μ΄', '2': 'λ°', '3': 'μ ', '4': 'μ΅' }
const names = ["κΉ", "μ΄", "λ°", "μ ", "μ΅", "κΉ", "μ΅", "μ ", "μ΄", "μ΄"];
const result = names.reduce((acc, cur) => {
if (!acc[cur]) {
acc[cur] = 0;
}
acc[cur] += 1;
return acc;
}, {});
console.log(result);
// { 'κΉ': 2, 'μ΄': 3, 'λ°': 1, 'μ ': 2, 'μ΅': 2 }
reduce()
λ μ€λ³΅μ μ κ±°νλλ°λ μ¬μ©ν μ μλ€.
const names = ["κΉ", "μ΄", "λ°", "μ ", "μ΅", "κΉ", "μ΅", "μ ", "μ΄", "μ΄"];
const result = names.reduce((acc, cur) => {
if (!acc.includes(cur)) {
acc.push(cur);
}
return acc;
}, []);
console.log(result);
// κ²°κ³Ό
[ 'κΉ', 'μ΄', 'λ°', 'μ ', 'μ΅' ]