javascript之典型高阶函数应用介绍_javascript技巧
缘由
虽然以前也使用过javascript语言,但终究是为了配合后端写的一些零零散散的“代码段”,更不能说是javascript项目了。很荣幸的是上个月刚到公司正好碰上项目开始推倒重写,我们team从头开始做架构和实现,目的很清楚,为了改进和超越前面的版本。这是个真正意义上的javascript“项目”,当然服务端不是我们team来负责啦。这也是我真正开始全职使用javascript来编程。由于之前在学校对形式化方法这门课程比较感兴趣,而javascript又是函数式语言,因此我想把更多functional的东西用javascript来表现一下。
几个函数
这几个方法均为javascript 1.6 数组新增的方法。是很典型的functional 函数,当然也非常实用。下面是functional的定义并不来自javascript。
filter:接受一个集合Xs(X表示类型,s表示集合),一个谓词,这个谓词是从X到bool的映射(函数)。然后过虑这个集合,并返回谓词为true的元素组成的集合。下面是简单的实现:
function filter(arr,callback){
var i,out=[];
for(i=0;i
out.push(arr[i]);
}
return out;
}
再加一个简单的测试:
var arr = [1,2,3,4,5,6,7,8,9,10];
var even = function(item){
if(typeof item !== "number") return false;
return !(item & 1);
};
var filtered = filter(arr,even);
console.log(filtered);
结果:
2,4,6,8,10
map:接受一个集合Xs,一个函数f,然后把Xs集合中每一个元素按照顺序使用f映射,并返回集合f x1, f x2, f x3 ... f xn。实现如下:
function map(arr,callback){
var i,l= arr && arr.length || 0,out = new Array(l);
for(i=0;i
return out;
}
测试一下:
var arr = [1,2,3,4,5,6,7,8,9,10];
var addTen = function(item){
return item + 10;
};
var mapAdded = map(arr,addTen);
console.log(mapAdded);
结果:
11,12,13,14,15,16,17,18,19,20
另外还有forEach,every和some三个函数在javascript 1.6中出现。但在使用过程中感觉还是缺少一个有力的函数,它就是折叠函数(fold)。正所谓map-reduce,有了map而没有"reduce"岂不是很扫兴?下面就来看看这个”reduce“。
Reduce的实现
上面说的reduce其实也就是折叠函数(fold)。它接受一个Xs集合,一个二元操作符f。然后将f插入到集合中的每两个相邻元素之间。举个例子,fold plus [1,2,3,4] 意即 1+2+3+4。为了更加精确,通常需要一个”起始元素“作为f最开始时的第二个参数。例如 fold plus [1,2,3,4] 意即 (1+(2+(3+(4+0)))。下面是实现:
function fold(arr,callback,b){
var i,x;
if(b) x=b,i=0;
else x=arr[0],i=1;
for(;i
return x;
}
测试:
var arr = [1,2,3,4,5,6,7,8,9,10];
var plus = function(a,b){
return a+b;
};
var foldPlus = fold(arr,plus,0);
console.log(foldPlus);
结果:
55
这个函数在ECMAScript 5中名字就叫reduce,而函数式里面通常称做fold而已,这是很形象的名字。
总结
其实上面在实现这些functional函数的时候编写风格并不是函数式的,因为javascript 语言有具有循环语句。如果没有循环语句呢?留给下一次探索吧。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PHP est un langage côté serveur largement utilisé. L'une des raisons pour lesquelles de nombreux développeurs Web aiment utiliser PHP est sa riche bibliothèque de fonctions et sa syntaxe de fonctions simple et facile à utiliser. La programmation fonctionnelle est un paradigme de programmation qui encapsule bien les données et le comportement, rendant le code plus modulaire et plus facile à maintenir et à tester. Dans cet article, nous présenterons comment utiliser PHP pour la programmation fonctionnelle. Bases de la programmation fonctionnelle L'idée centrale de la programmation fonctionnelle est de traiter les fonctions comme des citoyens de première classe. Les fonctions elles-mêmes peuvent être transmises, renvoyées et composées comme des variables.

En Python, une fonction qui prend une autre fonction comme argument ou renvoie une fonction en sortie est appelée fonction d'ordre supérieur. Voyons ses fonctionnalités - la fonction peut être stockée dans une variable. Cette fonction peut être passée en paramètre à une autre fonction. Les fonctions d'ordre supérieur peuvent être stockées sous forme de listes, de tables de hachage, etc. Les fonctions peuvent être renvoyées à partir de fonctions. Regardons quelques exemples - Fonctions en tant qu'objets La traduction chinoise de l'exemple est : Exemple Dans cet exemple, ces fonctions sont traitées comme des objets. Ici, la fonction demo() est affectée à une variable - #Creatingafunctiondefdemo(mystr):returnmystr.swapcase()#swappingthecase

Les fonctions d'ordre élevé incluent map(), filter(), réduire(), la fonction lambda, partial(), etc. Introduction détaillée : 1. map() : Cette fonction intégrée accepte une fonction et un ou plusieurs objets itérables en entrée, puis renvoie un itérateur qui applique la fonction d'entrée à chaque élément de l'objet itérable 2. filter() : Cette fonction intégrée prend une fonction et un objet itérable en entrée et renvoie un itérateur qui produit les éléments qui font que la fonction d'entrée renvoie True, etc.

Fonction flèche PHP : Comment gérer les appels imbriqués de fonctions d'ordre supérieur, des exemples de code spécifiques sont nécessaires Introduction : Dans la version 7.4 de PHP, le concept de fonctions fléchées (fonctions fléchées) a été introduit. être traités avec élégance. Les appels imbriqués vers des fonctions d’ordre supérieur. Cet article présentera l'utilisation de base des fonctions fléchées et démontrera comment gérer les appels imbriqués de fonctions d'ordre supérieur à travers des exemples de code spécifiques. 1. Qu'est-ce qu'une fonction fléchée ? La fonction flèche est une nouvelle fonctionnalité introduite dans la version PHP7.4.

Introduction au monde des fonctions d'ordre supérieur en Python Si vous souhaitez améliorer vos compétences en programmation Python et générer un code plus expressif et efficace, vous êtes au bon endroit. Les fonctions en Python sont plus que de simples blocs de code spécialisés. Ce sont également des éléments puissants qui peuvent être déplacés, transférés et même générés dynamiquement. Les fonctions d'ordre supérieur améliorent cette polyvalence en traitant d'autres fonctions. Cet article abordera en détail les principes des fonctions d'ordre supérieur. Nous explorerons les bases des processus en tant qu'objets de première classe, plongerons dans des exemples concrets de fonctions d'ordre supérieur et encouragerons la puissance des fonctions lambda pour un code clair et beau. Le modèle de programmation fonctionnelle et ses avantages lorsqu'il est utilisé en Python seront également abordés. Après avoir lu cet article, vous aurez une bonne compréhension des fonctions d'ordre supérieur et saurez

Avec la popularité et le développement du langage Golang, de plus en plus de développeurs commencent à essayer d'utiliser des idées de programmation fonctionnelle. Les fonctions d'ordre supérieur dans Golang apportent une grande commodité à la programmation fonctionnelle et sont largement utilisées dans le développement réel. Alors, quels sont les scénarios d’application des fonctions d’ordre élevé dans Golang ? Ensuite, nous analyserons cela. Traitement des paramètres de fonction et des valeurs de retour Dans Golang, les fonctions peuvent être utilisées comme paramètres d'autres fonctions ou fonctions de retour. Cela signifie que nous pouvons passer une fonction en paramètre à une autre

PHP est un langage côté serveur largement utilisé. L'une des raisons pour lesquelles de nombreux développeurs Web aiment utiliser PHP est sa riche bibliothèque de fonctions et sa syntaxe de fonctions simple et facile à utiliser. La programmation fonctionnelle est un paradigme de programmation qui encapsule bien les données et le comportement, rendant le code plus modulaire et plus facile à maintenir et à tester. Dans cet article, nous présenterons comment utiliser PHP pour la programmation fonctionnelle. Bases de la programmation fonctionnelle L'idée centrale de la programmation fonctionnelle est de traiter les fonctions comme des citoyens de première classe. Les fonctions elles-mêmes peuvent être transmises, renvoyées et composées comme des variables.

La fonction d'ordre supérieur est une fonction fonctionnelle très utile en Python. La fonction dite d'ordre supérieur est une fonction qui peut être utilisée pour recevoir une autre fonction en tant que paramètre.
