Cómo reducir una matriz de objetos de cuerda precio

0

Pregunta

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);

Yo no estoy tan seguro de cómo quitar el '$' de el precio antes de iniciar la adición de los valores de seguridad. He intentado mi mejor para buscar otras soluciones aquí (soy nuevo), pero parece ser que sólo ejemplos donde "precio" son sólo números.

Lo siento si esto un problema similar ya se ha publicado en algún otro lugar, pero todavía estoy aprendiendo a navegar aquí, y todavía tengo que encontrar una situación similar a menos que alguien me apunte a ella!

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

Mejor respuesta

0

Aquí, he utilizado Javascript por defecto de la función reduce para obtener la suma acumulativa.

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

esto funcionó! muchas gracias. Yo estaba entendiendo mal el iterador parte..
kon
0

En el código, la price que utiliza actualmente es el objeto de cada iteración con las propiedades de la matriz. En su lugar, usted puede tomar el precio de la propiedad del objeto.

En su ejemplo de los datos, no son solamente los líderes $ que se puede quitar desde el precio de la propiedad. A continuación, puede utilizar por ejemplo parseFloat y sólo agregar el valor si la conversión no se produce NaN.

A continuación, pase el groceries variable para reducir, en lugar de products que no está presente en el código de ejemplo.

Tenga en cuenta que actualmente estamos agregando los valores de la misma moneda, y si usted tiene diferentes monedas de tener a cuenta para que a la hora de calcular la suma.

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

En otros idiomas

Esta página está en otros idiomas

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