Comment faire pour réduire un tableau d'objets de cordes prix

0

La question

var groceries = [
  {
    id: 1,
    product: 'Olive Oil',
    price: '$' + 12.1
  },
  {
    id: 2,
    product: 'Tomato Soup',
    price: '$' + 3.48
  },
  {
    id: 3,
    product: 'Cheesecake',
    price: '$' + 17.36
  },
  {
    id: 4,
    product: 'Sirloin Steak',
    price: '$' + 14.8
  },
  {
    id: 5,
    product: 'Brie Cheese',
    price: '$' + 23.28
  }
];

var sum = _.reduce(products, function (total, price) {
    return total + price;
  }, 0);

Je ne suis pas sûr de savoir comment supprimer le '$' dans le prix avant de nous de départ en ajoutant les valeurs en place. J'ai essayé de mon mieux de chercher d'autres solutions ici (je suis nouveau), mais il semble y avoir seulement des exemples où les "prix" ne sont que des numéros.

Désolé si cela a un problème similaire déjà été posté quelque part, mais je suis encore à apprendre comment naviguer ici, et je n'ai pas encore trouver une situation similaire, à moins que quelqu'un peut me pointer à elle!

integer javascript reduce string
2021-11-23 08:38:50
2

La meilleure réponse

0

Ici, j'ai utilisé du Javascript par défaut de la fonction reduce pour obtenir la somme cumulée.

var groceries = [
  {
    id: 1,
    product: 'Olive Oil',
    price: '$' + 12.1
  },
  {
    id: 2,
    product: 'Tomato Soup',
    price: '$' + 3.48
  },
  {
    id: 3,
    product: 'Cheesecake',
    price: '$' + 17.36
  },
  {
    id: 4,
    product: 'Sirloin Steak',
    price: '$' + 14.8
  },
  {
    id: 5,
    product: 'Brie Cheese',
    price: '$' + 23.28
  }
];

//reduce((total, currentIteratedValue) => {}, initialCumulativeValue)
//Initially we take sum as 0
const sum = groceries.reduce(function (currentTotal, obj) {
  var price = parseFloat(obj.price.slice(1));
  if (!isNaN(price)) return currentTotal + price;  
  return currentTotal;
}, 0);


console.log(sum)

2021-11-23 09:52:50

cela a fonctionné! je vous remercie beaucoup. J'ai été un malentendu l'itérateur partie..
kon
0

Dans le code, l' price que vous utilisez actuellement est l'objet pour chaque itération avec les propriétés de la matrice. Au lieu de cela, vous pourriez prendre le prix de propriété de l'objet.

Dans votre exemple, de données, il y a que les grands $ que vous pouvez supprimer à partir du prix de la propriété. Ensuite, vous pouvez utiliser, par exemple, parseFloat et seulement ajouter de la valeur si la conversion n'est pas le rendement NaN.

Passer ensuite le groceries variable pour réduire la place de products ce qui n'est pas présent dans le code d'exemple.

Notez qu'actuellement nous sommes en ajoutant les valeurs de la même monnaie, et si vous avez des devises différentes, vous devez avoir à rendre compte pour que lors du calcul de la somme.

var groceries=[{id:1,product:'Olive Oil',price:'$'+12.1},{id:2,product:'Tomato Soup',price:'$'+3.48},{id:3,product:'Cheesecake',price:'$'+17.36},{id:4,product:'Sirloin Steak',price:'$'+14.8},{id:5,product:'Brie Cheese',price:'$'+23.28},{id:6,product:'Product with invalid price',price:'$'+"hello"}];

var sum = _.reduce(groceries, function (total, obj) {
  var price = parseFloat(obj.price.replace(/^\$/, ''));
  if (!isNaN(price)) {
    return total + price;  
  }
  return total;
}, 0);

console.log(sum)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.2/underscore-min.js"></script>

2021-11-23 09:38:30

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................