const ratesSchema = new Schema({
voter: {
type: Schema.Types.ObjectId,ref。'User'。
},
project: {
type: Schema.Types.ObjectId,ref。'Project'。
},
votes:{
participant:{
type: Schema.Types.ObjectId,ref。'User'。
},
criteria1: Number,
criteria2: Number,
criteria3: Number,
criteria4: Number,
criteria5: Number,
criteria6: Number,
criteria7: Number,
criteria8: Number,
criteria9: Number,
criteria10: Number,
criteria11: Number,
criteria12:String,
average: Number, average.
}
})
我想根據每個參與者的前10個標準和第11個標準的平均率來計算他們的平均數:
。const avg = (args)=> args. reduce((a, b) => a b) / args.length。
router.post('/:id/rate', isLogedIn, catchAsync(async(req, res, next) => {
const{project, voter, participants, criteria1, criteria2, criteria3, criteria4, criteria5, criteria6, criteria7, criteria8, criteria9, criteria10, criteria11, criteria12} = req.body。
for(let i= 0; i < participants.length; i ){
const rate = new Rates({
專案。
選民。
votes:{
participant: participants[i],
criteria1: criteria1[i],
criteria2: criteria2[i],
criteria3: criteria3[i],
criteria4: criteria4[i],
criteria5: criteria5[i],
criteria6: criteria6[i],
criteria7: criteria7[i],
criteria8: criteria8[i],
criteria9: criteria9[i],
criteria10: criteria10[i],
criteria11: criteria11[i],
criteria12: criteria12[i],
平均數。avg([avg([critical1[i], criteria2[i], criteria3[i], criteria4[i], criteria5[i], criteria6[i], criteria7[i], criteria8[i], criteria9[i], criteria10[i]), criteria11[i]] )
}
})
console.log(rate.votes.average)
}
res.send('hi')
}));
問題是,它沒有正確計算平均數,例如,如果所有的標準都被評為8分 它將計算出平均數為。4444444
誰能幫我解決這個問題(我是編程新手)?
uj5u.com熱心網友回復:
你應該把你的資料轉換為int你在添加 criteria1[i] 的時候是字串,而不是int。
你應該通過parseInt()將其轉換為int。
有兩種方法
1 :
const avg=(args)=> args. reduce((a, b) => parseInt(a) parseInt(b)) / args.length。
2 :
avg([avg([parseInt(callenge1[i]). ...), parseInt(candal11[i])) //對所有標準進行處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/324678.html
標籤:
上一篇:使Azure門戶上的Web應用程式僅在一周內可用幾個小時
下一篇:查找集合中的區域變數不作業
