Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NaN选择和的总值(以角度表示)_Javascript_Html_Arrays_Angular_Typescript - Fatal编程技术网

Javascript NaN选择和的总值(以角度表示)

Javascript NaN选择和的总值(以角度表示),javascript,html,arrays,angular,typescript,Javascript,Html,Arrays,Angular,Typescript,在我的项目中,我对select的值有一个问题。我不知道为什么,select只显示最后一个值,值与输入的乘积显示一个NaN结果。 另外,我想问一下,区分不同类别的价格priceAAB、priceFG是否是最好的解决方案?因为我有两个类,它们的价格都相等。例如,aab没有D0和D1,但价格不同。这些选择应根据我将在页面顶部选择的风险类型显示 小结 summary.html mq {{array.value}}:{{array.price} {{array.value}}:{{array.price

在我的项目中,我对select的值有一个问题。我不知道为什么,select只显示最后一个值,值与输入的乘积显示一个NaN结果。 另外,我想问一下,区分不同类别的价格priceAAB、priceFG是否是最好的解决方案?因为我有两个类,它们的价格都相等。例如,aab没有D0和D1,但价格不同。这些选择应根据我将在页面顶部选择的风险类型显示

小结

summary.html

mq {{array.value}}:{{array.price} {{array.value}}:{{array.price} 去 选择中的编号:{{intoSelectPrice}}
总计:{{Total}}您可能会得到NaN,因为您并没有在求和函数中初始化数字?与其这样做:让价格:数字,不如让价格:数字=0


此外,您是否应该使用price+=a.price来代替price=a.price?

这里有多个问题

您需要绑定来自模板元素的值,以便在控制器中重用它。最快的方法是使用ngModel双向绑定元素。 实现某种形式的验证,以防止在字段为空时调用sum函数。 去 使用Arrayreduce而不是forEach来执行求和,可以简化求和函数。 总数{ const priceSelected=this.risk==C?this.priceAAB:this.priceFG; this.intoSelectPrice=priceSelected.reduceacc,curr=>acc+=curr.price,0; this.total=this.intoSelectPrice*this.userNumber; }
我已经调整了你的

如果我们在sum函数中忽略了for each的可怕用法,那么你只是没有给userNumber属性赋值,你使用它作为this.total=price*this.userNumber中价格的乘数,从而导致NaN,@Krzysztof如何在输入对象中分配userNumber的值?userName在输入中,可以是字符串,请确保并转换为数字,您可以使用+:this.total=price*+this.userNumber.NOTE:使用类似的方法。intoSelectPrice=this.priceAAB.reducea:number,b:any=>a+b.price,0使用let price:number=0对数组的价格求和{{intoSelectPrice}}的值仍然错误,将始终选择最后一个select 1200,{{total}始终显示NaNHi Daniele!:你也试过这个吗?价格我喜欢这个解决方案。acc+=当前价格,0;将初始值设置为零,并在一行上累加总价
//risk: string = "C"
  risk: string = "D"
  userNumber: number
  intoSelectPrice: number = 0
  total: number = 0
  

  priceAAB: PriceAAB[] = [
    { id: 1, value: "D2", price: 240 },
    { id: 2, value: "D3", price: 840 },
    { id: 3, value: "D4", price: 1200 },
    { id: 4, value: "D5", price: 1200 }
  ]

  priceFG: PriceFG[] = [
    { id: 1, value: "D0", price: 840 },
    { id: 2, value: "D1", price: 840 },
    { id: 1, value: "D2", price: 1080 },
    { id: 2, value: "D3", price: 1200 },
    { id: 3, value: "D4", price: 1200 },
    { id: 4, value: "D5", price: 1200 }
  ]

  sum() {
    if(this.risk == "C") {
      let price: number
      this.priceAAB.forEach(a => {
          price = a.price
      })
      this.intoSelectPrice = price
      this.total = price * this.userNumber
    } else if(this.risk == "D") {
      let price: number
      this.priceFG.forEach(a => {
          price = a.price
      })
      this.intoSelectPrice = price
      this.total = price * this.userNumber
    }
  }
  
}

export class PriceAAB {
  id: number
  value: string
  price: number
}

export class PriceFG {
  id: number
  value: string
  price: number
}