Come ridurre le dimensioni di un array di oggetti di corda prezzo

0

Domanda

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

Io non sono così sicuro di come rimuovere il '$' il prezzo prima di partire sommando i valori fino. Ho fatto del mio meglio per cercare altre soluzioni qui (sono nuovo), ma sembra che ci sia solo esempi in cui "prezzo" sono solo numeri.

Scusate se questo un problema simile è già stato postato da qualche altra parte, ma sto ancora imparando a navigare qui, e devo ancora trovare una situazione simile, a meno che qualcuno può indicarmi a farlo!

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

Migliore risposta

0

Qui, ho usato Javascript la funzione di default reduce per ottenere la somma cumulativa.

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

questo ha funzionato! vi ringrazio tanto. Sono stato equivoco l'iteratore parte..
kon
0

Nel codice, il price che è attualmente in uso è l'oggetto per ogni iterazione con le proprietà della matrice. Invece, si potrebbe prendere il prezzo proprietà dell'oggetto.

Nel tuo esempio i dati, ci sono solo leader $ che si potrebbe togliere dal prezzo della proprietà. Poi si può usare, ad esempio, parseFloat e aggiungere solo il valore se la conversione non resa NaN.

Quindi passare il groceries variabile per ridurre invece di products che non è presente nel codice di esempio.

Si noti che attualmente stiamo aggiungendo i valori della stessa moneta, e se si dispone di diverse valute avete conto che quando si calcola la somma.

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

In altre lingue

Questa pagina è in altre lingue

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