Ako znížiť pole objektov strunové cenu

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

Nie som si tak istý, ako odstrániť '$' od ceny, než sme začína pridávanie hodnoty do. Snažil som sa čo najlepšie hľadať iné riešenia tu (som nový), ale zdá sa, že existuje iba príklady, kde "cena" sú iba čísla.

Ospravedlňujem sa ak to podobný problém už bol zverejnený inde, ale som to stále učenia ako na navigáciu tu, a ešte som sa nájsť podobnú situáciu, ak niekto môže ukážte mi na to!

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

Najlepšiu odpoveď

0

Tu som použil Javascript štandardné funkcie reduce pre získanie kumulatívny súč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

fungovalo to! ďakujem. Bol som nedorozumenie na iterator časť..
kon
0

V kódexe, price že v súčasnosti používate je objekt pre každú iteráciu s vlastnosťami z poľa. Namiesto toho by ste mohli mať cenu majetku z objektu.

Vo vašom príklade údajov, tam sú len vedúci $ aby ste mohli odstrániť z ceny nehnuteľnosti. Potom môžete použiť napríklad parseFloat a pridávať len hodnoty, ak konverzie nie je výnos NaN.

Potom prejsť groceries premenná, ak sa má znížiť namiesto products ktorý nie je prítomný v príklade kód.

Upozorňujeme, že v súčasnosti sme pridávanie hodnoty v rovnakej mene, a ak budete mať rôzne meny ste si na konto, pre ktoré sa pri výpočte sumy.

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 iných jazykoch

Táto stránka je v iných jazykoch

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