Heim Web-Frontend js-Tutorial Verwendung und Tipps der Array-Reduce()-Funktion in JavaScript

Verwendung und Tipps der Array-Reduce()-Funktion in JavaScript

Aug 21, 2017 am 10:03 AM
javascript js reduce

reduce führt die Rückruffunktion nacheinander für jedes Element im Array aus, mit Ausnahme von Elementen, die gelöscht werden oder denen im Array nie ein Wert zugewiesen wurde. Als nächstes werde ich Ihnen in diesem Artikel die detaillierte Erklärung und die fortgeschrittenen Techniken der JS-Array-Reduction()-Methode mitteilen. Schauen wir uns das an

Grundlegende Konzepte

reduce( )-Methode akzeptiert eine Funktion als Akkumulator und jeder Wert im Array (von links nach rechts) wird auf einen Wert reduziert.

reduce führt die Rückruffunktion nacheinander für jedes Element im Array aus, mit Ausnahme von Elementen, die gelöscht werden oder denen im Array nie ein Wert zugewiesen wurde, und akzeptiert vier Parameter: Anfangswert (oder den Rückgabewert des letzten Rückrufs). Funktion), der aktuelle Elementwert, der aktuelle Index, das Array, in dem Reduce aufgerufen wird.

Syntax:


arr.reduce(callback,[initialValue])
Nach dem Login kopieren
  • Rückruf (jeden Aufruf ausführen das Array Eine Wertfunktion, die vier Parameter enthält)

  • previousValue (der vom letzten Rückrufaufruf zurückgegebene Wert oder der bereitgestellte Anfangswert (initialValue))

  • aktueller Wert (das aktuell verarbeitete Element im Array)

  • Index (der Index des aktuellen Elements im Array)

  • array ( Array zum Aufrufen von Reduce)

  • initialValue (als erster Parameter des ersten Callback-Aufrufs.)

Einfache Anwendung

Beispiel 1:


var items = [10, 120, 1000];
// our reducer function
var reducer = function add(sumSoFar, item) { return sumSoFar + item; };
// do the job
var total = items.reduce(reducer, 0);
console.log(total); // 1130
Nach dem Login kopieren

Es ist zu erkennen, dass die Reduzierungsfunktion basierend auf der Initiale kontinuierlich überlagert wird Wert 0 , Vervollständigen Sie die Implementierung der einfachsten Summe.

Der Rückgabeergebnistyp der Reduktionsfunktion ist derselbe wie der übergebene Anfangswert. Im vorherigen Beispiel war der Anfangswert vom Typ Zahl. Ebenso kann der Anfangswert auch vom Typ Objekt sein.

Beispiel 2:


var items = [10, 120, 1000];
// our reducer function
var reducer = function add(sumSoFar, item) {
 sumSoFar.sum = sumSoFar.sum + item;
 return sumSoFar;
};
// do the job
var total = items.reduce(reducer, {sum: 0});
console.log(total); // {sum:1130}
Nach dem Login kopieren

Erweiterte Anwendung

Verwenden Sie „reduce This“. Die Methode kann eine mehrdimensionale Datenüberlagerung abschließen. Wie im obigen Beispiel gezeigt, ist der Anfangswert {sum: 0} nur eine eindimensionale Operation. Wenn es sich um die Überlagerung mehrerer Attribute handelt, wie z. B. {sum: 0, totalInEuros: 0, totalInYen: 0}, entspricht dies der Logik ist erforderlich.

In der folgenden Methode wird die Divide-and-Conquer-Methode übernommen, dh der Rückruf, der erste Parameter der Reduzierfunktion, wird in ein Array gekapselt und jede Funktion im Array wird unabhängig überlagert und abgeschlossen der Reduzierungsvorgang. Alles wird über eine Managerfunktion verwaltet und es werden Anfangsparameter übergeben.


var manageReducers = function(reducers) {
 return function(state, item) {
  return Object.keys(reducers).reduce(
   function(nextState, key) {
    reducers[key](state, item);
    return state;
   },
   {}
  );
 }
};
Nach dem Login kopieren

Das Obige ist die Implementierung der Manager-Funktion. Sie erfordert Reduzierobjekte als Parameter und gibt eine Funktion vom Typ Callback als ersten Parameter von Reduce zurück. Innerhalb dieser Funktion wird mehrdimensionale Überlagerungsarbeit (Object.keys()) durchgeführt.

Durch diese Divide-and-Conquer-Idee kann die gleichzeitige Überlagerung mehrerer Attribute des Zielobjekts vervollständigt werden. Der vollständige Code lautet wie folgt:


var reducers = { 
 totalInEuros : function(state, item) {
  return state.euros += item.price * 0.897424392;
 },
 totalInYen : function(state, item) {
  return state.yens += item.price * 113.852;
 }
};
var manageReducers = function(reducers) {
 return function(state, item) {
  return Object.keys(reducers).reduce(
   function(nextState, key) {
    reducers[key](state, item);
    return state;
   },
   {}
  );
 }
};
var bigTotalPriceReducer = manageReducers(reducers);
var initialState = {euros:0, yens: 0};
var items = [{price: 10}, {price: 120}, {price: 1000}];
var totals = items.reduce(bigTotalPriceReducer, initialState);
console.log(totals);
Nach dem Login kopieren

Hier kommt ein Beispiel:

Die Abschlussnote eines bestimmten Schülers wird wie folgt ausgedrückt


var result = [
  {
    subject: 'math',
    score: 88
  },
  {
    subject: 'chinese',
    score: 95
  },
  {
    subject: 'english',
    score: 80
  }
];
Nach dem Login kopieren

Wie finde ich die Gesamtnote des Schülers?


var sum = result.reduce(function(prev, cur) {
  return cur.score + prev;
}, 0);
Nach dem Login kopieren

Unter der Annahme, dass der Schüler wegen Verstoßes gegen die Disziplin bestraft wird und einen Gesamtabzug von 10 Punkten von der Gesamtpunktzahl erhält, müssen Sie nur den Anfangswert auf - setzen. 10.


var sum = result.reduce(function(prev, cur) {
  return cur.score + prev;
}, -10);
Nach dem Login kopieren

Machen wir dieses Beispiel etwas schwieriger. Wenn jedes Fach unterschiedliche Gewichte in der Gesamtpunktzahl des Schülers hat, nämlich 50 %, 30 % und 20 %, wie sollten wir dann das endgültige Gewichtungsergebnis ermitteln?

Die Lösung lautet wie folgt:


var dis = {
  math: 0.5,
  chinese: 0.3,
  english: 0.2
}
var sum = result.reduce(function(prev, cur) {
  return cur.score + prev;
}, -10);
var qsum = result.reduce(function(prev, cur) {
  return cur.score * dis[cur.subject] + pre;
}, 0)
console.log(sum, qsum);
Nach dem Login kopieren

Schauen Sie sich ein anderes Beispiel an, wie Sie es herausfinden können eine Zeichenfolge. Wie oft kommt jeder Buchstabe in der Zeichenfolge vor?


var arrString = 'abcdaabc';
arrString.split('').reduce(function(res, cur) {
  res[cur] ? res[cur] ++ : res[cur] = 1
  return res;
}, {})
Nach dem Login kopieren

Da der Typanfangswert des Überlagerungsergebnisses über den zweiten Parameter festgelegt werden kann, ist die Reduzierung zu diesem Zeitpunkt nicht mehr nur eine Addition, wir können flexibel sein Verwenden Sie es, um verschiedene Typkonvertierungen durchzuführen, z. B. das Konvertieren von Arrays in Objekte nach bestimmten Regeln oder das Konvertieren einer Array-Form in eine andere Array-Form. Sie können es selbst ausprobieren.


[1, 2].reduce(function(res, cur) { 
  res.push(cur + 1); 
  return res; 
}, [])
Nach dem Login kopieren

Im Quellcode von koa gibt es ein einziges Modul. Das gesamte Modul ist ein einfaches Objekt, das die Reduzierungsmethodenoperation zurückgibt:


var only = function(obj, keys){
 obj = obj || {};
 if ('string' == typeof keys) keys = keys.split(/ +/);
 return keys.reduce(function(ret, key){
  if (null == obj[key]) return ret;
  ret[key] = obj[key];
  return ret;
 }, {});
};
Nach dem Login kopieren

Durch das Verständnis des Reduktionskonzepts möchte dieses Modul hauptsächlich ein Objektobjekt der im obj-Objekt vorhandenen Schlüssel erstellen und zurückgeben.


var a = {
  env : 'development',
  proxy : false,
  subdomainOffset : 2
}
only(a,['env','proxy'])  // {env:'development',proxy : false}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonVerwendung und Tipps der Array-Reduce()-Funktion in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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)

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Apr 03, 2024 am 11:55 AM

Die Technologie zur Gesichtserkennung und -erkennung ist bereits eine relativ ausgereifte und weit verbreitete Technologie. Derzeit ist JS die am weitesten verbreitete Internetanwendungssprache. Die Implementierung der Gesichtserkennung und -erkennung im Web-Frontend hat im Vergleich zur Back-End-Gesichtserkennung Vor- und Nachteile. Zu den Vorteilen gehören die Reduzierung der Netzwerkinteraktion und die Echtzeiterkennung, was die Wartezeit des Benutzers erheblich verkürzt und das Benutzererlebnis verbessert. Die Nachteile sind: Es ist durch die Größe des Modells begrenzt und auch die Genauigkeit ist begrenzt. Wie implementiert man mit js die Gesichtserkennung im Web? Um die Gesichtserkennung im Web zu implementieren, müssen Sie mit verwandten Programmiersprachen und -technologien wie JavaScript, HTML, CSS, WebRTC usw. vertraut sein. Gleichzeitig müssen Sie auch relevante Technologien für Computer Vision und künstliche Intelligenz beherrschen. Dies ist aufgrund des Designs der Webseite erwähnenswert

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen mit PHP und JS Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen mit PHP und JS Dec 17, 2023 pm 06:55 PM

Wesentliche Tools für die Aktienanalyse: Lernen Sie die Schritte zum Zeichnen von Kerzendiagrammen in PHP und JS. Mit der rasanten Entwicklung des Internets und der Technologie ist der Aktienhandel für viele Anleger zu einer wichtigen Möglichkeit geworden. Die Aktienanalyse ist ein wichtiger Teil der Anlegerentscheidung, und Kerzendiagramme werden häufig in der technischen Analyse verwendet. Wenn Sie lernen, wie man Kerzendiagramme mit PHP und JS zeichnet, erhalten Anleger intuitivere Informationen, die ihnen helfen, bessere Entscheidungen zu treffen. Ein Candlestick-Chart ist ein technischer Chart, der Aktienkurse in Form von Candlesticks anzeigt. Es zeigt den Aktienkurs

Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Dec 17, 2023 pm 12:09 PM

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript Dec 17, 2023 am 09:39 AM

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

See all articles