[関数式プログラミングとES 6+]4.map、filter、reduceをカスタマイズすると、多形性に役立ちます.
map()
抽出する値を返す関数と反復器を使用して、新しい配列を作成し、返します.const map = (f, iter) => { // iterator iter와 내부함수 f를 전달받는다.
const result = [];
for (const el of iter)
result.push(f(el));
return result; // FP는 side effect를 일으키지 않고 순수하게 결과값 그대로 반환한다.
}
地図の多形性
既存の地図方法はArrayです.prototypeで定義されているため、Arrayを継承しない他のiterableではmapメソッドは使用できません.
ただし、前に作成したmap関数はpropertyにメソッドが存在するかどうかは自由です.
->すべてのiterableをパラメータとして得ることができるので、多形性(多様なタイプの能力を持つ)の面で有利である.
filter()
iterableを巡って、条件に合致する値を内部関数と判断し、新しい配列に戻るconst filter = (f, iter) => {
let result = [];
for (const el of iter)
if (f(el)) result.push(el); /
return result;
}
reduce()
iterable値を1つの値に縮小します.const reduce = (f, acc, iter) => {
for (const el of iter)
acc = f(acc, el);
return acc;
}
const map = (f, iter) => { // iterator iter와 내부함수 f를 전달받는다.
const result = [];
for (const el of iter)
result.push(f(el));
return result; // FP는 side effect를 일으키지 않고 순수하게 결과값 그대로 반환한다.
}
iterableを巡って、条件に合致する値を内部関数と判断し、新しい配列に戻る
const filter = (f, iter) => {
let result = [];
for (const el of iter)
if (f(el)) result.push(el); /
return result;
}
reduce()
iterable値を1つの値に縮小します.const reduce = (f, acc, iter) => {
for (const el of iter)
acc = f(acc, el);
return acc;
}
const reduce = (f, acc, iter) => {
for (const el of iter)
acc = f(acc, el);
return acc;
}
const reduce = (f, acc, iter) => {
if (!iter) {
iter = acc[Symbol.iterator]();
acc = iter.next().value;
}
for (const el of iter)
acc = f(acc, el);
return acc;
}
Reference
この問題について([関数式プログラミングとES 6+]4.map、filter、reduceをカスタマイズすると、多形性に役立ちます.), 我々は、より多くの情報をここで見つけました https://velog.io/@fan/함수형-프로그래밍과-ES6-4.-사용자-정의-map-filter-reduce는-다형성에-있어서-유리하다テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol