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