Jak snížit pole objektů strunné cena

0

Otázka

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

Nejsem si tak jistá, jak odstranit '$' z ceny, než začneme přidávat hodnoty. Snažil jsem se moje nejlepší, aby podívejte se na jiné řešení, sem (jsem tu nová), ale tam se zdá být pouze příklady, kde "cena" jsou jen čísla.

Omlouvám se, pokud to podobný problém již byl vyslán někde jinde, ale jsem stále učí, jak se orientovat tady, a ještě jsem se najít podobné situaci, pokud někdo mi může ukázat to!

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

Nejlepší odpověď

0

Tady jsem použil Javascript je výchozí funkce reduce pro získání kumulativní součet.

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

to fungovalo! děkuji moc. Byl jsem nedorozumění iterátor část..
kon
0

V kódu, price že jste v současné době použít, je objekt pro každou iteraci s vlastnostmi z pole. Místo toho jsi mohl mít cenu majetku od objektu.

Ve vašem příkladu údajů, tam jsou jen přední $ že byste mohli odstranit z ceny nemovitosti. Pak můžete použít například parseFloat a pouze přidat hodnotu, pokud konverze nepřináší NaN.

Pak projít groceries variabilní snížit místo products který je obsažen v příkladu kódu.

Všimněte si, že v současné době jsme přidávání hodnoty ve stejné měně, a pokud máte různé měny, musíte mít k účtu pro to, že při výpočtu částky.

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

V jiných jazycích

Tato stránka je v jiných jazycích

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