ES6+ Basic3
μΈνλ° ν¨μν νλ‘κ·Έλλ°κ³Ό JavaScript ES6+ / μ μΈλ
range
const range = l => {
let i = -1;
let res = [];
while (++i < l) {
res.push(i);
}
return res;
};
// rangeκ° λͺ¨λ λνκΈ°
var list = range(4);
log(list);
log(reduce(add, list));
rangeλ₯Ό μ€νν μ¦μ λ°°μ΄λ‘ νκ°κ° λ¨(κ°μ΄ λ§λ€μ΄μ§)
λκΈν L.range
const L = {}
L.range = function *(l) {
let i = -1;
while (++i < l) {
yield i;
}
};
// rangeκ° λͺ¨λ λνκΈ°
var list = L.range(4);
log(list); // μ΄ν°λ μ΄ν°
log(reduce(add, list));
μ΄ν°λ μ΄ν°μ λ΄λΆλ₯Ό μ€μ λ‘ μνν λ λ§λ€ κ°μ΄ νλμ© νκ°κ° λ¨(ν¨μλ΄λΆμμλ νκ°X, nextν λ νκ°λ¨)
λ°°μ΄μ λ§λ€μ§ μκ³ νλμ© κ°μ κΊΌλ΄κΈ°λ§ ν¨
μ‘°κΈ λ ν¨μ¨μ μ΄λΌκ³ λ³Ό μ μμ(μ§μ°μ±)
take
const take = (l, iter) => {
let res = [];
for (const a of iter) {
res.push(a);
if (res.length == l) return res;
}
return res;
}
// λ§μ κ°μ λ°μμ μλΌμ£Όλ ν¨μ
log(take(5, range(10000)));
// λΉν¨μ¨μ
log(take(5, L.range(10000)));
// ν¨μ¨μ
μ§μ°μ±μ μ°μ°μ νμ§ μκ³ μλ€κ° takeλ reduceκ°μ ν¨μλ₯Ό λ§λ λ μ°μ°μ μ²μνλ κΈ°λ²
μ΄ν°λ¬λΈ(리μ€νΈ) μ€μ¬ νλ‘κ·Έλλ°μμμ μ§μ° νκ° Lazy Evaluation
μ λ κ³μ°λ²(μ리ν κ³μ°λ²)
λκΈν κ³μ°λ²
μ λλ μ΄ν°/μ΄ν°λ μ΄ν° νλ‘ν μ½μ κΈ°λ°μΌλ‘ ꡬν
L.map
L.map = function *(f, iter) {
for(const a of iter) yield f(a);
};
// nextλ₯Ό ν΅ν΄ νκ°νλ κ°λ§ μ»μ΄μ¬ μ μμ
// L.map μ체λ λ°°μ΄μ λ§λ€μ§ μμ
νκ°λ₯Ό 미루λ μ±μ§μ κ°μ§κ³ νκ°μμλ₯Ό λ¬λ¦¬ μ‘°μν μ μλ μ€λΉκ° λμ΄μλ μ΄ν°λ μ΄ν°λ₯Ό λ°ννλ μ λλ μ΄ν° ν¨μ
L.filter
L.filter = function *(f, iter) {
for(const a of iter) if (f(a)) yield a;
};
λ§μ°¬κ°μ§λ‘ ν¨μλ₯Ό μννλ λμμλ νκ°κ° μ΄λ£¨μ΄μ§μ§ μμ
range, map, filter, take, reduce μ€μ²© μ¬μ©
go(range(10),
map(n => n + 10),
filter(n => n % 2),
take(2),
log);
μλΆν° μμλλ‘ νκ°νλ©΄μ λ΄λ €μ΄
L.range, L.map, L.filter, take, reduce μ€μ²© μ¬μ©
go(L.range(10),
L.map(n => n + 10),
L.filter(n => n % 2),
take(2),
log);
μλμ μλ‘ λ€μ μμμ μλλ‘ μΈλ‘λ‘ νκ°λ¨
μ΅μ’ μ μΌλ‘ takeν μλ§νΌλ§ λμνκΈ° λλ¬Έμ rangeμ μκ° μ무리 λ§μλ μκ°μ λκ°μ
map, filter κ³μ΄μ ν¨μλ€μ΄ κ°μ§λ κ²°ν© λ²μΉ
μ¬μ©νλ λ°μ΄ν°κ° 무μμ΄λ μ§
μ¬μ©νλ 보쑰 ν¨μκ° μμ ν¨μλΌλ©΄ 무μμ΄λ μ§
μλμ κ°μ΄ κ²°ν©νλ€λ©΄ λ λ€ κ²°κ³Όκ° κ°μ
ex) [[mapping, mapping], [filtering, filtering], [mapping, mapping]] == [[mapping, filtering, mapping], [mapping, filtering, mapping]]
ES6μ κΈ°λ³Έ κ·μ½μ ν΅ν΄ ꡬννλ μ§μ° νκ°μ μ₯μ
μλ‘ λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬, λ€λ₯Έ μ¬λμ΄ λ§λ ν¨μμ¬λ κΈ°λ³Έ κ·μ½μ κΈ°λ°μΌλ‘ ν¨μΌλ‘ μμ ν λ°©μμΌλ‘ ν©μ±ν μ μμ
Last updated