Javascript 如何在Angular JS中汇总对象数组中的货币值

Javascript 如何在Angular JS中汇总对象数组中的货币值,javascript,angularjs,arrays,Javascript,Angularjs,Arrays,我有一个API调用返回的对象数组。对象结构如下所示 这样,数组可以包含n个对象 我要做的是将所选对象的所有映射成本的所有值相加并显示总和 但一个问题是,成本可能有点棘手 它们的格式可以是.30或978。等,我们分别假设为0.30和978.00。它们也可以为null或未定义,在这种情况下,我们必须将其默认为0.0 如何实现角度JS中的和?如何处理适当的转换并显示总和?希望我没弄错,那么我创建的这个Plunk应该可以满足您的需要: 只需迭代数组,检查值是否为null或undefined(如果是)

我有一个API调用返回的对象数组。对象结构如下所示

这样,数组可以包含
n
个对象

我要做的是<代码>将所选对象的所有映射成本的所有值相加并显示总和

但一个问题是,
成本
可能有点棘手

它们的格式可以是.30或978。等,我们分别假设为0.30和978.00。它们也可以为null或未定义,在这种情况下,我们必须将其默认为0.0


如何实现角度JS中的和?如何处理适当的转换并显示总和?

希望我没弄错,那么我创建的这个Plunk应该可以满足您的需要:


只需迭代数组,检查值是否为null或undefined(如果是),将其设置为0.0并对所有值求和。

以下是我处理未定义/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))


您可以映射数组并获得成本,然后使用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); 
是代码排斥来做到这一点。

现在似乎是使用reduce的好时机
const数据=[
{
所选映射:{
费用:“.30”
}
},
{
所选映射:{
费用:“200”
}
},
{
所选映射:{
费用:“.60”
}
},
{
所选映射:{
费用:“.22”
}
},
{
所选映射:{
成本:空
}
}];
const sumCost=(数据)=>
数据还原(
(成本、分录)=>
成本+(parseFloat(entry.selectedMapping.cost)| | 0),
0
)

console.log(sumCost(data))
toFixed(2)很抱歉这么粗鲁,但是您的销售代表的用户应该知道共享代码和示例数据(而不是屏幕截图)的重要性。另外,为了澄清,
Number.toFixed()
将返回格式为的字符串。您可以计算总数,然后使用
.toFixed
进行显示