我有以下 javascript 物件
const reizen = {
personen: [
{
naam: "Bob",
reizen: [
{
locatie: "Frankrijk",
uitgaven: [
{ voorwerp: "Sokken", prijs: 15 },
{ voorwerp: "Sleutelhanger", prijs: 6 },
{ voorwerp: "Restaurant", prijs: 26 },
]
},
{
locatie: "Duitsland",
uitgaven: [
{ voorwerp: "Taxi", prijs: 30 },
]
}
]
},
]
}
我試圖得到它說“prijs”的所有值的總和(它是荷蘭語)有沒有一種“簡單”的方法可以做到這一點?
uj5u.com熱心網友回復:
它并不完全性感 - 我實際上不會這樣做 - 但要提供地圖/減少等的替代方案 - 無需遞回即可獲得總計數的最簡單方法是將物件字串化(JSON.stringify),拆分為“ prijs' 給出一個以目標數字開頭的字串陣列,然后(忽略不包含任何目標值的第一項),parseFloat 字串(它將決議整數字符,直到第一個非整數字符)以獲得數字并添加。
const reizen = {
personen: [
{
naam: "Bob",
reizen: [
{
locatie: "Frankrijk",
uitgaven: [
{ voorwerp: "Sokken", prijs: 15 },
{ voorwerp: "Sleutelhanger", prijs: 6 },
{ voorwerp: "Restaurant", prijs: 26 },
]
},
{
locatie: "Duitsland",
uitgaven: [
{ voorwerp: "Taxi", prijs: 30 },
]
}
]
},
]
}
const stringifiedObj = JSON.stringify(reizen);
const portions = stringifiedObj.split('prijs\":');
let count = 0;
for(let i = 1; i < portions.length; i ) {
count = parseFloat(portions[i])
}
console.log(count) // gives 77 (15 6 26 30)
uj5u.com熱心網友回復:
const reizen = {
personen: [
{
naam: "Bob",
reizen: [
{
locatie: "Frankrijk",
uitgaven: [
{ voorwerp: "Sokken", prijs: 15 },
{ voorwerp: "Sleutelhanger", prijs: 6 },
{ voorwerp: "Restaurant", prijs: 26 },
]
},
{
locatie: "Duitsland",
uitgaven: [
{ voorwerp: "Taxi", prijs: 30 },
]
}
]
},
]
}
let arr = reizen.personen ;
let sum = 0;
arr.map(temp=>{
temp.reizen.map(val=>
val.uitgaven.map(obj=>{ if(obj.prijs)sum =obj.prijs})
)})
console.log(sum)
uj5u.com熱心網友回復:
假設您的陣列可以包含多個專案,您可以使用嵌套減速器:
const reizen = {
personen: [{
naam: "Bob",
reizen: [{
locatie: "Frankrijk",
uitgaven: [{
voorwerp: "Sokken",
prijs: 15
},
{
voorwerp: "Sleutelhanger",
prijs: 6
},
{
voorwerp: "Restaurant",
prijs: 26
},
]
},
{
locatie: "Duitsland",
uitgaven: [{
voorwerp: "Taxi",
prijs: 30
}, ]
}
]
}, ]
}
const result = reizen.personen.reduce((tot, per) =>
tot per.reizen.reduce((acc, item) =>
acc item.uitgaven.reduce((res, it) => res it.prijs, 0), 0), 0);
console.log(result);
uj5u.com熱心網友回復:
在reizen級別(第二個)
function getTotalPrijs(reizen_){
// var reizen_ = reizen.personen[0].reizen;
let _prijs = 0
reizen_.map((item, index)=>{
const uitgaven = item.uitgaven;
uitgaven.map(itm => typeof itm.prijs === "number"? _prijs =itm.prijs : null)
})
return _prijs
}
在personen級別(第一個)
var total_prijs = 0
reizen.personen.map(item =>{
const reizen = item.reizen;
total_prijs =(getTotalPrijs(reizen))
})
console.log(total_prijs)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/466634.html
標籤:javascript
下一篇:將地圖項插入DynamoDb
