TIL-17、高次関数
高次関数、
名前も難しい高次関数!
今日はこいつを学ぼう!
パラメータ(パラメータ)として関数を受け入れることができます.
関数として返すことができる関数.
このとき、パラメータとして別の関数に渡される関数
コールバック関数と呼ばれます.
パラメータとして別の関数を受信します.
パラメータとしてnumを受け入れる「add」関数があります.
このとき入力
return値によると、結果は4+2=6です.
関数を返すとき
この状態でadder関数を実行します.
「add」関数のみが返されます.
だから
または
このように関数を呼び出すことができます.
パラメータとして関数を受信し、関数を返します.
パラメータとしてaddと関数を受け入れる関数では、
パラメータとして受信した関数に追加された関数を渡す
倍増を宣言する.
ここではnumがパラメータである匿名関数を実行します.
パラメータに戻り値として渡されるnumと宣言されたdouble
もっとやれば、
numに2を乗じた数値にnumを加えた値を返します.
デフォルトでは、JavaScriptには
高次関数があります.
感謝の仕方を知りましょう
(元のシナリオを変更しない)
[1,2,3]という名前の配列があります.この配列から2という名前の要素をフィルタしたい場合は、
[1, 2, 3].filter(arr => arr === 2);//[2].
[1, 2, 3].filter(arr => arr !== 2);//[1, 3].
上のように濾過できます.
矢印関数を使わない方法もあります.
[1, 2, 3].filter( function (arr) {
return arr === 2;
});//[2]
上記のように.
filterを使用した配列からのみ偶数を抽出
(元のシナリオを変更しない)
[1,2,3]という配列がありますが、この要素をすべて2に乗じたい場合は
[1, 2, 3].map(num => num * 2);//[2, 4, 6]
全部10を足したい時.
[1, 2, 3].map(num => num + 10);//[11, 12, 13]
上記のように交換できます.
すべての要素を必要な要素に変換する場合は、
[1, 2, 3].map(num => 5);//[5, 5, 5]
入力はuのようにすればよい.
mapを使用して整数5を乗算
filter、sortもできます.
[1,2,3]の並びがあり、この数を全部足したいなら
[1, 2, 3].reduce((num1, num2) => num1 + num2);
//6 (1 + 2 + 3)
上記のように.関数の最後に開始点を指定できます.
例えば、以下のようになります.
[1, 2, 3].reduce((num1, num2) => num1 + num2, 5);
//11 (5 + 1 + 2 + 3)
reduceを使用して全体を乗算する
利用される.私たちはよく理解しなければなりません.
どうしよう.
プログラム化プログラミング.
これは私が望んでいる結果をコードで実現する過程を重点とする方法です.
繰り返し文を使用して、すべての配列要素にアクセスして計算する方法.
なんだ.
宣言プログラミングは、「必要なもの」を作成するために使用されます.
これはポイントの方法です.
プログラム化プログラミングにおけるコード
以下に示すように、宣言プログラミングで表すことができます.
コードを記述するのではなく、組み込みの高差関数を使用します.
これはプログラム型プログラミング方式の抽象である.
見た目は視覚的ではないが、想像しにくい.
より高いレベルでプログラミングできます.
名前も難しい高次関数!
今日はこいつを学ぼう!
高次関数とは?
パラメータ(パラメータ)として関数を受け入れることができます.
関数として返すことができる関数.
このとき、パラメータとして別の関数に渡される関数
コールバック関数と呼ばれます.
パラメータとして別の関数を受信します.
function add(num) {
return num + 2;
}
function addNum(func, num) {
return func(num);
}
前述したようにnumに2を加算する「add」関数があります.パラメータとしてnumを受け入れる「add」関数があります.
このとき入力
addNum(add, 4)
「addnum」関数の最初のパラメータは「add」関数です.return値によると、結果は4+2=6です.
関数を返すとき
function adder(num1) {
return function add(num2) {
return num1 + num2;
}
}
上記のコードがあります.この状態でadder関数を実行します.
「add」関数のみが返されます.
だから
adder(1)(2);
/3または
let add5 = adder(5)
前述したように、関数自体を宣言します.add5(3)
//8このように関数を呼び出すことができます.
パラメータとして関数を受信し、関数を返します.
function double(num) {
return num * 2;
}
function doubleAdder(added, func) {
const doubled = func(added);
return function (num) {
return num + doubled;
}
}
numには2を乗じた「double」関数があります.パラメータとしてaddと関数を受け入れる関数では、
パラメータとして受信した関数に追加された関数を渡す
倍増を宣言する.
ここではnumがパラメータである匿名関数を実行します.
パラメータに戻り値として渡されるnumと宣言されたdouble
もっとやれば、
numに2を乗じた数値にnumを加えた値を返します.
内蔵高次関数
デフォルトでは、JavaScriptには
高次関数があります.
感謝の仕方を知りましょう
filter()
->特定の条件を満たす要素をフィルタします.(元のシナリオを変更しない)
[1,2,3]という名前の配列があります.この配列から2という名前の要素をフィルタしたい場合は、
[1, 2, 3].filter(arr => arr === 2);//[2].
[1, 2, 3].filter(arr => arr !== 2);//[1, 3].
上のように濾過できます.
矢印関数を使わない方法もあります.
[1, 2, 3].filter( function (arr) {
return arr === 2;
});//[2]
上記のように.
filterを使用した配列からのみ偶数を抽出
let arr = [1, 2, 3, 4, 5, 6, 7, 8];
arr.filter(num => num % 2 === 0);
// [2, 4, 6, 8]
map()
->配列内の要素を条件に従って関数に変換します.(元のシナリオを変更しない)
[1,2,3]という配列がありますが、この要素をすべて2に乗じたい場合は
[1, 2, 3].map(num => num * 2);//[2, 4, 6]
全部10を足したい時.
[1, 2, 3].map(num => num + 10);//[11, 12, 13]
上記のように交換できます.
すべての要素を必要な要素に変換する場合は、
[1, 2, 3].map(num => 5);//[5, 5, 5]
入力はuのようにすればよい.
mapを使用して整数5を乗算
let arr = [1, 2, 3, 4];
arr.map(num => num * 5);
// [5, 10, 15, 20]
reduce
万能.全部加算する.積み重ねる.これを使って地図を作ることができますが、filter、sortもできます.
[1,2,3]の並びがあり、この数を全部足したいなら
[1, 2, 3].reduce((num1, num2) => num1 + num2);
//6 (1 + 2 + 3)
上記のように.関数の最後に開始点を指定できます.
例えば、以下のようになります.
[1, 2, 3].reduce((num1, num2) => num1 + num2, 5);
//11 (5 + 1 + 2 + 3)
reduceを使用して全体を乗算する
let arr = [1, 2, 3];
arr.reduce((num1, num2) => num1 * num2);
// 6 (1 * 2 * 3)
私は本当にこれまで知られていた高次関数を埋め込む3つの方法をよく使っています.利用される.私たちはよく理解しなければなりません.
プログラム化と宣言プログラミング
절차형 프로그래밍
どうしよう.
プログラム化プログラミング.
これは私が望んでいる結果をコードで実現する過程を重点とする方法です.
function add2(arr) {
let result = [];
for (let i = 0; i < arr.length; i++) {
result.push(arr[i] + 2)
}
return result;
}
上記のコードに示すように、アレイ内の各要素に2を追加します.繰り返し文を使用して、すべての配列要素にアクセスして計算する方法.
선언형 프로그래밍
なんだ.
宣言プログラミングは、「必要なもの」を作成するために使用されます.
これはポイントの方法です.
プログラム化プログラミングにおけるコード
以下に示すように、宣言プログラミングで表すことができます.
function add2(arr) {
return arr.map(arr => arr + 2);
}
上のコードはmap()の動作を示しています.コードを記述するのではなく、組み込みの高差関数を使用します.
これはプログラム型プログラミング方式の抽象である.
見た目は視覚的ではないが、想像しにくい.
より高いレベルでプログラミングできます.
Reference
この問題について(TIL-17、高次関数), 我々は、より多くの情報をここで見つけました https://velog.io/@skagns211/TIL-17-고차함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol