Cum de a reduce o serie de obiecte de preț cu coarde

0

Problema

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

Nu sunt sigur cum de a elimina '$' de preț înainte de a începe adăugarea de valori. Am încercat meu cel mai bun să caute alte soluții de aici (sunt noi), dar nu pare a fi doar exemple unde "prețul" sunt doar numere.

Îmi pare rău dacă asta o problemă similară a fost deja postat în altă parte, dar sunt încă de învățare cum să navigați aici, și am încă pentru a găsi o situație similară, cu excepția cazului în care cineva poate să-mi punctul de ea!

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

Cel mai bun răspuns

0

Aici, am folosit Javascript implicit funcția reduce pentru a obține suma cumulativă.

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

aceasta a lucrat! vă mulțumesc foarte mult. Am fost neînțelegere iterator parte..
kon
0

În cod, price pe care le utilizați în prezent este obiect pentru fiecare iterație cu proprietățile din matrice. În schimb, ai putea lua prețul de proprietate de la obiect.

În exemplul de date, nu sunt doar de conducere $ care ar putea elimina de la prețul de proprietate. Apoi, puteți utiliza, de exemplu, parseFloat și doar adaugă valoare în cazul în care conversia nu produce NaN.

Apoi trece groceries variabilă pentru a reduce în loc de products care nu este prezent în exemplul de cod.

Rețineți că în prezent suntem adăugarea de valori din aceeași monedă, și, dacă aveți diferite monede ai trebui să țină seama de faptul că atunci când se calculează 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

În alte limbi

Această pagină este în alte limbi

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