Heim Web-Frontend js-Tutorial javascript之典型高阶函数应用介绍_javascript技巧

javascript之典型高阶函数应用介绍_javascript技巧

May 16, 2016 pm 05:43 PM
高阶函数

缘由
虽然以前也使用过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;iif(callback(arr[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;iout[i]=callback(arr[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(;ix=callback(arr[i],x);
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 语言有具有循环语句。如果没有循环语句呢?留给下一次探索吧。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man funktionale Programmierung mit PHP durchführt Wie man funktionale Programmierung mit PHP durchführt Jun 06, 2023 am 08:21 AM

PHP ist eine weit verbreitete serverseitige Sprache. Einer der Gründe, warum viele Webentwickler gerne PHP verwenden, ist die umfangreiche Funktionsbibliothek und die einfache und benutzerfreundliche Funktionssyntax. Funktionale Programmierung ist ein Programmierparadigma, das Daten und Verhalten gut kapselt, wodurch der Code modularer und einfacher zu warten und zu testen ist. In diesem Artikel stellen wir vor, wie man PHP für die funktionale Programmierung verwendet. Grundlagen der funktionalen Programmierung Die Kernidee der funktionalen Programmierung besteht darin, Funktionen als erstklassige Bürger zu behandeln. Funktionen selbst können wie Variablen übergeben, zurückgegeben und zusammengesetzt werden.

Wie erstelle ich Funktionen höherer Ordnung in Python? Wie erstelle ich Funktionen höherer Ordnung in Python? Sep 05, 2023 pm 07:29 PM

In Python wird eine Funktion, die eine andere Funktion als Argument verwendet oder eine Funktion als Ausgabe zurückgibt, als Funktion höherer Ordnung bezeichnet. Sehen wir uns ihre Funktionen an – die Funktion kann in einer Variablen gespeichert werden. Diese Funktion kann als Parameter an eine andere Funktion übergeben werden. Funktionen höherer Ordnung können in Form von Listen, Hash-Tabellen usw. gespeichert werden. Funktionen können von Funktionen zurückgegeben werden. Schauen wir uns einige Beispiele an: Funktionen als Objekte. Die chinesische Übersetzung von Beispiel lautet: Beispiel. In diesem Beispiel werden diese Funktionen als Objekte behandelt. Hier wird die Funktion demo() einer Variablen zugewiesen – #Creatingafunctiondefdemo(mystr):returnmystr.swapcase()#swappingthecase

Was sind die Funktionen höherer Ordnung in Python? Was sind die Funktionen höherer Ordnung in Python? Nov 10, 2023 pm 04:42 PM

Zu den Funktionen höherer Ordnung gehören Map(), Filter(), Reduce(), Lambda-Funktion, Partial() usw. Detaillierte Einführung: 1. map(): Diese integrierte Funktion akzeptiert eine Funktion und ein oder mehrere iterierbare Objekte als Eingabe und gibt dann einen Iterator zurück, der die Eingabefunktion auf jedes Element des iterierbaren Objekts anwendet. 2. filter(): Diese integrierte Funktion verwendet eine Funktion und ein iterierbares Objekt als Eingabe und gibt einen Iterator zurück, der die Elemente zurückgibt, die dazu führen, dass die Eingabefunktion „True“ usw. zurückgibt.

PHP-Pfeilfunktionen: Umgang mit verschachtelten Aufrufen von Funktionen höherer Ordnung PHP-Pfeilfunktionen: Umgang mit verschachtelten Aufrufen von Funktionen höherer Ordnung Sep 13, 2023 am 08:27 AM

PHP-Pfeilfunktion: Für den Umgang mit verschachtelten Aufrufen von Funktionen höherer Ordnung sind spezifische Codebeispiele erforderlich. Einführung: In Version 7.4 von PHP wurde das Konzept der Pfeilfunktionen (Pfeilfunktionen) eingeführt Verschachtelte Aufrufe an Funktionen höherer Ordnung können elegant verarbeitet werden. In diesem Artikel wird die grundlegende Verwendung von Pfeilfunktionen vorgestellt und anhand spezifischer Codebeispiele gezeigt, wie verschachtelte Aufrufe von Funktionen höherer Ordnung verarbeitet werden. 1. Was ist eine Pfeilfunktion? Die Pfeilfunktion ist eine neue Funktion, die in der PHP7.4-Version eingeführt wurde

Funktionen höherer Ordnung in Python Funktionen höherer Ordnung in Python Sep 13, 2023 pm 06:53 PM

Einführung in die Welt der Funktionen höherer Ordnung in Python Wenn Sie Ihre Python-Programmierkenntnisse verbessern und aussagekräftigeren und effizienteren Code generieren möchten, sind Sie hier genau richtig. Funktionen in Python sind mehr als nur spezialisierte Codeblöcke. Sie sind außerdem leistungsstarke Dinge, die bewegt, übertragen und sogar dynamisch generiert werden können. Funktionen höherer Ordnung erhöhen diese Vielseitigkeit durch die Verarbeitung anderer Funktionen. In diesem Artikel werden die Prinzipien von Funktionen höherer Ordnung ausführlich erörtert. Wir erforschen die Grundlagen von Prozessen als erstklassige Objekte, tauchen in reale Beispiele für Funktionen höherer Ordnung ein und fördern die Leistungsfähigkeit von Lambda-Funktionen für klaren und schönen Code. Das funktionale Programmiermodell und seine Vorteile bei der Verwendung in Python werden ebenfalls besprochen. Nachdem Sie diesen Artikel gelesen haben, verfügen Sie über ein solides Verständnis für Funktionen höherer Ordnung und wissen es

Analyse von Anwendungsszenarien von Funktionen höherer Ordnung in Golang Analyse von Anwendungsszenarien von Funktionen höherer Ordnung in Golang May 17, 2023 pm 05:40 PM

Mit der Popularität und Entwicklung der Golang-Sprache versuchen immer mehr Entwickler, funktionale Programmierideen zu nutzen. Funktionen höherer Ordnung in Golang erleichtern die funktionale Programmierung erheblich und werden in der tatsächlichen Entwicklung häufig verwendet. Was sind also die Anwendungsszenarien für Funktionen höherer Ordnung in Golang? Als nächstes werden wir dies analysieren. Verarbeitung von Funktionsparametern und Rückgabewerten In Golang können Funktionen als Parameter anderer Funktionen oder Rückgabefunktionen verwendet werden. Das bedeutet, dass wir eine Funktion als Parameter an eine andere übergeben können

Wie man funktionale Programmierung mit PHP durchführt Wie man funktionale Programmierung mit PHP durchführt Jun 06, 2023 am 08:21 AM

PHP ist eine weit verbreitete serverseitige Sprache. Einer der Gründe, warum viele Webentwickler gerne PHP verwenden, ist die umfangreiche Funktionsbibliothek und die einfache und benutzerfreundliche Funktionssyntax. Funktionale Programmierung ist ein Programmierparadigma, das Daten und Verhalten gut kapselt, wodurch der Code modularer und einfacher zu warten und zu testen ist. In diesem Artikel stellen wir vor, wie man PHP für die funktionale Programmierung verwendet. Grundlagen der funktionalen Programmierung Die Kernidee der funktionalen Programmierung besteht darin, Funktionen als erstklassige Bürger zu behandeln. Funktionen selbst können wie Variablen übergeben, zurückgegeben und zusammengesetzt werden.

Wie versteht man Funktionen höherer Ordnung von Funktionstypen in Golang? Wie versteht man Funktionen höherer Ordnung von Funktionstypen in Golang? Apr 20, 2024 am 11:54 AM

Golang-Funktionen höherer Ordnung akzeptieren und geben Funktionen zurück. Sie lassen sich in zwei Kategorien einteilen: Empfangen von Funktionen als Parameter, Verarbeiten anderer Funktionen oder Ausführen dynamischer Programme. Rückgabefunktionen als Rückgabewerte: Funktionen erstellen und zurückgeben, die gespeichert und später ausgeführt werden können.

See all articles