[英]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.