関数式プログラミングVSコマンド式プログラミング
2446 ワード
jsはES 6が登場するまでの開発モデルは基本的に命令式プログラミング(IP)モデルで開発されていましたが、ES 6が発表されて以来、jsの開発大神たちはPythonやRubyの開発モデルを真似て、関数式プログラミング(FP)モデルも流行してきました.reactを学んだことがある方はご存知でしょうか
命令式
配列のすべての要素を印刷するとします
かんすうしき
分割機能ぶんかつきのう:配列を反復し、各項目を印刷
両者の違い:
ES 2015+の関数式プログラミング進化
例:配列の最小値を特定する
コマンド:配列を反復し、現在の値が配列要素より大きいかどうかを確認します.
関数式:Math.min関数と(...)拡張演算子
矢印関数の簡略化プロセス
map、filter、reduce——関数式プログラミング基礎ツールボックス
例:あるデータセットを別のセットに変換またはマッピングする
コマンド:
ES2015+
フィルタフィルタの追加
命令式
かんすうしき
接合配列——reduceの使い方
命令式
かんすうしき
シンかんすうしき
命令式
配列のすべての要素を印刷するとします
const print = function(arr) {
for(let i=0;i
かんすうしき
分割機能ぶんかつきのう:配列を反復し、各項目を印刷
const forEach = function (arr, act) {
for(let i=0;i
両者の違い:
、
, ; ,
, ; , 、 、
, , , ,
ES 2015+の関数式プログラミング進化
例:配列の最小値を特定する
コマンド:配列を反復し、現在の値が配列要素より大きいかどうかを確認します.
let findMin = function(arr) {
let min = arr[0];
for(let i=0;iarr[i]) {
min = arr[i];
}
}
retrun min;
}
関数式:Math.min関数と(...)拡張演算子
const min = function(arr) {
return Math.min(...arr);
};
矢印関数の簡略化プロセス
const min = arr => Math.min(...arr);
map、filter、reduce——関数式プログラミング基礎ツールボックス
例:あるデータセットを別のセットに変換またはマッピングする
コマンド:
const dayOfWeek = [
{name: "Monday", value: 1},
{name: "Tuesday", value: 2},
{name: "Wednesday", value: 3},
];
let dayOfWeekVal = [];
for(let i=0;i
ES2015+
cosnt dayOfWeekVal = dayOfWeek.map(day => day.value);
フィルタフィルタの追加
命令式
const poNum = function(arr) {
let po = [];
for(let i=0;i=0) {
po.push(arr[i]);
}
}
return po;
}
かんすうしき
const poNum = arr => arr.filter(num => (num>=0));
接合配列——reduceの使い方
命令式
const mergeArr = function(arrays) {
let newArr = [];
let k = 0;
for(let i=0;i
かんすうしき
const mergeArr = function(arrays) {
return arrays.reduce(
function(p,n) {
return p.concat(n);
}
);
};
シンかんすうしき
const mergeArr = (...arrays) => [].concat(...arrays);