Heim > Web-Frontend > js-Tutorial > Zusammenfassung der Verwendung von Reduce in Javascript (mit Code)

Zusammenfassung der Verwendung von Reduce in Javascript (mit Code)

不言
Freigeben: 2018-09-05 11:32:45
Original
1672 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine Zusammenfassung der Verwendung von Reduce in JavaScript (mit Code). Ich hoffe, dass er für Freunde hilfreich ist.

In letzter Zeit sehe ich oft, wie andere Reduzieren verwenden, um Daten in Projekten zu verarbeiten. Es ist besser, selbst darüber nachzudenken.

Schauen Sie sich zuerst die W3C-Syntax an

array.reduce(function(total, currentValue, currentIndex, arr), initialValue);
/*
  total: 必需。初始值, 或者计算结束后的返回值。
  currentValue: 必需。当前元素。
  currentIndex: 可选。当前元素的索引;                     
  arr: 可选。当前元素所属的数组对象。
  initialValue: 可选。传递给函数的初始值,相当于total的初始值。
*/
Nach dem Login kopieren

Allgemeine Verwendung

Array-Summierung

const arr = [12, 34, 23];
const sum = arr.reduce((total, num) => total + num);
<!-- 设定初始值求和 -->
const arr = [12, 34, 23];
const sum = arr.reduce((total, num) => total + num, 10);  // 以10为初始值求和
<!-- 对象数组求和 -->
var result = [
  { subject: 'math', score: 88 },
  { subject: 'chinese', score: 95 },
  { subject: 'english', score: 80 }
];
const sum = result.reduce((prev, cur) => prev + cur.score, 0); 
const sum = result.reduce((prev, cur) => prev + cur.score, -10);  // 总分扣除10分
Nach dem Login kopieren

Array-Maximalwert

const a = [23,123,342,12];
const max = a.reduce(function(pre,cur,inde,arr){return pre>cur?pre:cur;}); // 342
Nach dem Login kopieren

Erweiterte Verwendung

Verwendung in Array-Objekten

<!-- 比如生成“老大、老二和老三” -->
const objArr = [{name: '老大'}, {name: '老二'}, {name: '老三'}];
const res = objArr.reduce((pre, cur, index, arr) => {
  if (index === 0) {
    return cur.name;
  }
  else if (index === (arr.length - 1)) {
    return pre + '和' + cur.name;
  }
  else {
    return pre + '、' + cur.name;
  }
}, '');
Nach dem Login kopieren

Ermitteln Sie die Häufigkeit des Vorkommens von Buchstaben in einer Zeichenfolge

const str = 'sfhjasfjgfasjuwqrqadqeiqsajsdaiwqdaklldflas-cmxzmnha';
const res = str.split('').reduce((prev, cur) => {prev[cur] ? prev[cur]++ : prev[cur] = 1; return prev;}, {});
Nach dem Login kopieren

Array zu Array

<!-- 按照一定的规则转成数组 -->
var arr1 = [2, 3, 4, 5, 6]; // 每个值的平方
var newarr = arr1.reduce((prev, cur) => {prev.push(cur * cur); return prev;}, []);
Nach dem Login kopieren

Array zu Objekt

<!-- 按照id 取出stream -->
var streams = [{name: '技术', id: 1}, {name: '设计', id: 2}];
var obj = streams.reduce((prev, cur) => {prev[cur.id] = cur; return prev;}, {});
Nach dem Login kopieren

Erweiterte Verwendung

Mehrdimensionale Overlay-Ausführungsoperation

<!-- 各科成绩占比重不一样, 求结果 -->
var result = [
  { subject: 'math', score: 88 },
  { subject: 'chinese', score: 95 },
  { subject: 'english', score: 80 }
];
var dis = {
    math: 0.5,
    chinese: 0.3,
    english: 0.2
};
var res = result.reduce((prev, cur) => dis[cur.subject] * cur.score + prev, 0);

<!-- 加大难度, 商品对应不同国家汇率不同,求总价格 -->
var prices = [{price: 23}, {price: 45}, {price: 56}];
var rates = {
  us: '6.5',
  eu: '7.5',
};
var initialState = {usTotal:0, euTotal: 0};
var res = prices.reduce((prev1, cur1) => Object.keys(rates).reduce((prev2, cur2) => {
  console.log(prev1, cur1, prev2, cur2);
  prev1[`${cur2}Total`] += cur1.price * rates[cur2];
  return prev1;
}, {}), initialState);

var manageReducers = function() {
  return function(state, item) {
    return Object.keys(rates).reduce((nextState, key) => {
        state[`${key}Total`] += item.price * rates[key];
        return state;
      }, {});
  }
};
var res1= prices.reduce(manageReducers(), initialState);
Nach dem Login kopieren

Ein flaches mehrdimensionales Array

var arr = [[1, 2, 8], [3, 4, 9], [5, 6, 10]];
var res = arr.reduce((x, y) => x.concat(y), []);
Nach dem Login kopieren

Objekt-Array-Deduplizierung

const hash = {};
  chatlists = chatlists.reduce((obj, next: Object) => {
    const hashId = `${next.topic}_${next.stream_id}`;
    if (!hash[hashId]) {
      hash[`${next.topic}_${next.stream_id}`] = true;
      obj.push(next);
    }
    return obj;
  }, []);
Nach dem Login kopieren

Verwandte Empfehlungen:

Detaillierte Erläuterung der Verwendung der Methode Reduce() in JavaScript

Detaillierte Erläuterung der Anwendung der integrierten Funktion Reduce in Javascript

Das obige ist der detaillierte Inhalt vonZusammenfassung der Verwendung von Reduce in Javascript (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage