我有一个来自API调用的返回对象数组。对象结构看起来像这样......
像这样,数组可以包含n
个对象。
我要做的是...... sum up all the values of all the object's selectedMapping.cost
并显示总和。
但有一个问题是costs
可能有点棘手。
它们可以是.30或978等格式,我们必须分别假设为0.30和978.00。它们可以为null或未定义,在这种情况下,我们必须将其默认为0.0
如何在Angular JS中获得总和?如何处理适当的转换并显示总和?
答案 0 :(得分:1)
const data = [
{
selectedMapping: {
cost: ".30"
}
},
{
selectedMapping: {
cost: "200"
}
},
{
selectedMapping: {
cost: ".60"
}
},
{
selectedMapping: {
cost: ".22"
}
},
{
selectedMapping: {
cost: null
}
}];
const sumCost = (data) =>
data.reduce(
(cost, entry) =>
cost + (parseFloat(entry.selectedMapping.cost) || 0),
0
)
console.log(sumCost(data))
答案 1 :(得分:0)
希望我帮到你,然后我创造的这个掠夺者应该做你想做的事: https://embed.plnkr.co/zzQkybjND5xi2Uo7dNHZ/
只需迭代数组,检查null或undefined的值,如果这样设置为0.0并将所有值相加。
答案 2 :(得分:0)
这是我处理undefined / null项目的解决方案
const sum = items.reduce((prevVal,item)=>{
const selectedMapping = item.selectedMapping || null
const cost = (isNaN(selectedMapping) && 'cost' in selectedMapping)? Number(selectedMapping.cost) : 0
return prevVal + cost
},0)
console.log(sum.toFixed(2))
答案 3 :(得分:0)
你可以映射数组并获得成本,然后使用ramdajs的R.sum方法
const array = [
{
selectedMapping: {
cost: ".30"
}
},
{
selectedMapping: {
cost: "200"
}
},
{
selectedMapping: {
cost: ".60"
}
},
{
selectedMapping: {
cost: ".10"
}
},];
const currency = array.map(curr=>parseFloat(curr.selectedMapping.cost))
R.sum(currency);
here是执行此操作的代码排除。