Dize fiyatının bir nesne dizisi nasıl azaltılır

0

Soru

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

Değerleri eklemeye başlamadan önce '$' değerini fiyattan nasıl kaldıracağımdan emin değilim. En iyi benim diğer çözümler için de buraya bak (yeniyim) denedim, ama orada "fiyat" sadece numaraları sadece örnek gibi görünüyor.

Bu benzer bir sorun zaten başka bir yerde yayınlandıysa özür dilerim, ancak yine de burada nasıl gezinileceğini öğreniyorum ve birisi bana işaret edemediği sürece benzer bir durum bulamadım!

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

En iyi cevabı

0

Burada Javascript'in varsayılan işlevini kullandım reduce kümülatif toplamı almak için.

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

bu işe yaradı! Çok teşekkür ederim. Yineleyici kısmını yanlış anlamıştım..
kon
0

Kodu price şu anda kullandığınız, dizideki özelliklere sahip her yineleme için nesnedir. Bunun yerine, price özelliğini nesneden alabilirsiniz.

Örnek verilerinizde yalnızca satır başları vardır $ fiyat mülkünden kaldırabileceğini. Daha sonra örneğin parseFloat kullanabilir ve yalnızca dönüşüm NaN vermezse değeri ekleyebilirsiniz.

Sonra pass groceries değişken yerine azaltmak için products örnek kodda bulunmayan.

Şu anda aynı para biriminin değerlerini eklediğimizi ve farklı para birimleriniz varsa, toplamı hesaplarken bunu hesaba katmanız gerektiğini unutmayın.

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

Diğer dillerde

Bu sayfa diğer dillerde

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