partir d'un tableau d'objets représentant les actions, leurs prix au comptant et d'autres propriétés telles queréduction JS idiomatiques et fonctionnelle du tableau d'objets avec prédicat
stocks = [ { ticker: 'GOOG', price: 206, ... },
{ ticker: 'AAPL', price: 47, ... },
{ ticker: 'MSFT', price: 39, ... },
{ ticker: 'GOOG', price: 159, ... },
{ ticker: 'MSFT', price: 39, ... },
{ ticker: 'MSFT', price: 21, ... },
{ ticker: 'GOOG', price: 80, ... },
{ ticker: 'AAPL', price: 20, ... },
{ ticker: 'AAPL', price: 73, ... },
{ ticker: 'MSFT', price: 49, ... },
... ];
Je voudrais revenir un tableau réduit avec, pour chaque ticker, l'objet ayant le prix maximum (et les autres propriétés) d'une manière fonctionnelle.
Voici ce que j'ai jusqu'à présent:
c.reduce(function(acc, y) {
return acc
.filter(function(x) { return x.ticker!=y.ticker })
.concat(
acc.filter(function(x) { return x.ticker==y.ticker })
.concat([y])
.reduce(function(u,v) {
return u.price > v.price ? u : v }) /* predicate */
)
}, []);
Mais est-il un moyen JavaScript plus idiomatiques de le faire? Underscore et lodash sont les bienvenus mais s'il vous plaît pas jQuery.
Mes excuses. Veuillez réessayer mon code, j'ai fait référence à 'x.stock' d'une version précédente au lieu de' x.ticker'. Merci pour votre message! –
Note: J'utiliserais '_.first()' au lieu de '(...) [0]'. –
Mieux avec 'first()', j'ai édité mon post. – Shanoor