簡體   English   中英

如何總結 javascript object 的值?

[英]How to sum up values from a javascript object?

我在一個數組中有以下值,我試圖得到它的總和。 這就是 chrome 開發者工具的樣子

(3) [{…}, {…}, {…}]0: {ID: 1, ProductName: " New phone 1", Price: "€ 600"}1: {ID: 3, ProductName: " New phone 2", Price: "€ 1000"}2: {ID: 4, ProductName: " New phone 3", Price: "€ 400"}length: 3__proto__: Array(0)

我想獲取每個項目的價格並計算所有值的總和。 我從 Api 中獲取這些值,它有時可能更多或更少。 目前這就是我獲得價值的方式

function setTotalPrice() {
    fetch("http://localhost:1234/api/Product")
        .then(response=>response.json())
        .then(data => {
            data.forEach(element => {
                console.log(element.Price)
            });
        })
}

您需要從Price字符串 ( split ) 中獲取數字並使用reduce對它們求和

 const data = [ { ID: 1, ProductName: 'New phone 1', Price: '€ 600' }, { ID: 3, ProductName: 'New phone 2', Price: '€ 1000' }, { ID: 4, ProductName: 'New phone 3', Price: '€ 400' }, ]; const result = data.reduce((acc, val) => acc + parseInt(val.Price.split(' ')[1], 10), 0); console.log(result); console.log('€ ' + result);

如果 API 可以為Price返回浮點數,則需要改用parseFloat

 const data = [ { ID: 1, ProductName: 'New phone 1', Price: '€ 600.25' }, { ID: 3, ProductName: 'New phone 2', Price: '€ 1000' }, { ID: 4, ProductName: 'New phone 3', Price: '€ 400.10' }, ]; const result = data.reduce((acc, val) => acc + parseFloat(val.Price.split(' ')[1]), 0); console.log(result); console.log('€ ' + result);

const sum = data
  .map(({ price }) => {
    const digitsStartIndex = price.substring(price.findIndex(' ') + 1);
    return parseFloat(digitsStartIndex, 10)
  })
  .reduce((a, b) => a + b, 0)
console.log(`€ ${sum}`)

您可以使用reduce和一點正則表達式/\d+/

 let data = [ { id: 1, product: 'phone 1', price: '€ 400' }, { id: 3, product: 'phone 2', price: '€ 3000' }, { id: 4, product: 'phone 3', price: '€ 600' }, ]; let sum = data.reduce((a,{price}) => a + Number(price.match(/\d+/)),0); console.log(sum);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM