我从一个api中获得一个等级数组,但当它试图添加它们以获得avarege时。它们被打印而不是添加。
这是来自api的数组
grades: (8) ["71", "81", "72", "92", "79", "82", "91", "90"]
我的代码
student.grades.map((grades) => {
var avarge = 0;
avarge = avarge + grades;
return avarge;
})
输出
071081072092079082091090
字符串串联与数字加法。使用Number
,您可以将类似数字的字符串强制转换为数字,现在就可以进行加法了。
简单数组::reduce可将值的数组缩减为单个值。
const grades = ["71", "81", "72", "92", "79", "82", "91", "90"];
const total = grades.reduce((sum, grade) => sum + Number(grade), 0);
console.log('total', total);
console.log('avg', total / grades.length);
巧合的是,您也可以进行一些强制转换,方法是在值前面加上+
,将其强制转换为数字,但应注意。
const grades = ["71", "81", "72", "92", "79", "82", "91", "90"];
const total = grades.reduce((sum, grade) => sum + +grade, 0);
console.log('total', total);
console.log('avg', total / grades.length);
使用ParseInt对字符串进行类型转换,您正在尝试添加字符串。使用parseInt或parseFloat将字符串转换为整数或浮点。然后你就可以添加数字字符串了。https://www.tutorialspoint.com/how-to-add-a-number-and-a-string-in-javascript
student.grades.map((grade) => {
var average = 0;
average = parseInt(average) + parseInt(grade);
return average
});
在javascript中减少
let data = ["71", "81", "72", "92", "79", "82", "91", "90"];
let total = data.reduce(( accumulator, currentValue ) => accumulator + parseInt(currentValue),0);
console.log("Total : "+total)
console.log("Average : "+total / data.length)