Nous commençons par définir un immense tableau data de 50000 objets.
Nous pouvons réduire le tableau à un objet contenant les valeurs :
- console.time("reduce");
- let {min, max, sum} = data.reduce(function( {max, min, sum}, {x}) {
- min = Math.min(min,x);
- max = Math.max(max,x);
- sum = sum + x;
- return { min, max, sum}
- },
- {min : Number.MAX_VALUE,
- max : Number.MIN_VALUE,
- sum : 0
- });
- console.timeEnd("reduce");
- console.log( min, max, sum );
Autre
- console.time("map");
- const mapData = data.map(i => i.x);
- const maxData = Math.max(...mapData);
- const minData = Math.min(...mapData);
- for (let i = 0, sum = 0; i < data.length; sum += data[i++]);
- console.timeEnd("map");
- console.log(minData,maxData,sum);
Résultats de la comparaison
$ node comparaisonMin.js
reduce: 12.563ms
15 999996 24956286473
map: 24.679ms
15 999996 24956286473
$ node comparaisonMin.js
reduce: 16.015ms
5 999997 25029524292
map: 26.572ms
5 999997 25029524292