Jak zmniejszyć tablicę obiektów z ciąg ceną

0

Pytanie

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 jestem do końca pewien, jak usunąć " $ " z ceny, zanim zaczniemy dodawać wartości. Starałem się ze wszystkich sił starał się znaleźć inne rozwiązania (jestem początkujący), ale wygląda na to, że istnieje tylko przykłady, gdzie jest "cena" - to tylko liczby.

Przepraszam, jeśli ten podobny problem już został opublikowany gdzieś jeszcze, ale wciąż się uczę poruszać się tutaj, i mam jeszcze znaleźć podobną sytuację, jeśli tylko ktoś nie wskaże mi na niej!

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

Najlepsza odpowiedź

0

Tutaj użyłem funkcji Javascript domyślnie reduce w celu uzyskania łącznej kwoty.

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 zadziałało! Dziękuję bardzo!. Źle zrozumiałem część iteratora..
kon
0

W kodeksie jest napisane, że price to, że używasz w tej chwili, jest obiektem dla każdej iteracji z właściwościami z tablicy. Zamiast tego możesz wziąć właściwość price z obiektu.

W danych twojego przykładu jest tylko czołowi $ co można usunąć z właściwości ceny. Następnie można użyć, na przykład, parseFloat i dodać wartość tylko wtedy, jeśli konwersja nie daje NaN.

Następnie należy przekazać groceries zmienna, aby zmniejszyć zamiast products którego nie ma w przykładzie kodu.

Należy zwrócić uwagę, że obecnie dodajemy wartości w jednej i tej samej walucie, a jeśli masz różne waluty, trzeba wziąć to pod uwagę przy obliczaniu kwoty.

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

W innych językach

Ta strona jest w innych językach

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