在 javascript 中返回 NaN 的函数
function returning NaN in javascript
我正在尝试编写一个函数来计算学生对象列表中的平均学生年龄,但是当我 运行 代码时,该函数打印 NaN 作为输出
function average_age(){
let total = 0;
students.forEach(s => {
total += Number(s.age);
});
return total/size
}
console.log("Average age is : " + average_age())
这就是我构建数组的方式(我得到了用户的输入)
const size = 5
let students = [size]
for (let i=1; i<=5; i++){
let name = prompt("Enter student's name: ")
let gender = prompt ("Enter student's gender: ")
students.push({
name: name,
gender: gender,
age:Math.round(Math.random() * (35 - 17 + 1) + 1),
grade:Math.round(Math.random() * (100 + 1))
})
}
//display student info
students.map(s =>{
console.log("Name: " + s.name);
console.log("gender: " + s.gender);
console.log("age: " + s.age);
console.log("grade: " + s.grade);
console.log();
})
我试图计算学生年龄的总和(删除除法运算)以检查问题是否出在除法上,但我仍然得到 NaN 作为输出
您可以查看下面的 3 种方法来解决您的问题:
const students = [
{ id: 1, name: "john", age: 25 },
{ id: 2, name: "jack", age: 31 },
{ id: 3, name: "joe", age: 26 },
{ id: 4, name: "jamal", age: 21 },
];
// Your approach:
function average_age() {
let total = 0;
let numberOfStudents = students.length;
students.map(student => {
total += Number(student.age);
});
return total / numberOfStudents;
}
// Second approach:
function average_age_second() {
let total = 0;
let numberOfStudents = students.length;
students.forEach(student => {
total += Number(student.age);
});
return total / numberOfStudents;
}
// Third approach:
function average_age_third() {
let numberOfStudents = students.length;
const total = students.reduce((partialSum, student) => partialSum + student.age, 0);
return total / numberOfStudents;
}
console.log("Average age is : " + average_age());
console.log("Average age is : " + average_age_second());
console.log("Average age is : " + average_age_third());
假设学生数组采用以下格式(在您收集输入后):
let students = [
{ name: "aaaa" , gender: "male" , age: 17, grade: 63 },
{ name: "bbbb" , gender: "male" , age: 20, grade: 70 },
{ name: "yyyy" , gender: "female", age: 18, grade: 45 },
{ name: "zzzz" , gender: "female", age: 18, grade: 70 },
{ name: "xxxx" , gender: "male" , age: 20, grade: 83 },
];
一种可能的解决方案如下:
let students = [
{ name: "aaaa" , gender: "male" , age: 17, grade: 63 },
{ name: "bbbb" , gender: "male" , age: 20, grade: 70 },
{ name: "yyyy" , gender: "female", age: 18, grade: 45 },
{ name: "zzzz" , gender: "female", age: 18, grade: 70 },
{ name: "xxxx" , gender: "male" , age: 20, grade: 83 },
];
//------------------------------
function average_age(students){
let total = 0;
students.forEach(s => total +=s.age);
return total/students.length
}
//------------------------------
console.log("Average age is : " + average_age(students));
我正在尝试编写一个函数来计算学生对象列表中的平均学生年龄,但是当我 运行 代码时,该函数打印 NaN 作为输出
function average_age(){
let total = 0;
students.forEach(s => {
total += Number(s.age);
});
return total/size
}
console.log("Average age is : " + average_age())
这就是我构建数组的方式(我得到了用户的输入)
const size = 5
let students = [size]
for (let i=1; i<=5; i++){
let name = prompt("Enter student's name: ")
let gender = prompt ("Enter student's gender: ")
students.push({
name: name,
gender: gender,
age:Math.round(Math.random() * (35 - 17 + 1) + 1),
grade:Math.round(Math.random() * (100 + 1))
})
}
//display student info
students.map(s =>{
console.log("Name: " + s.name);
console.log("gender: " + s.gender);
console.log("age: " + s.age);
console.log("grade: " + s.grade);
console.log();
})
我试图计算学生年龄的总和(删除除法运算)以检查问题是否出在除法上,但我仍然得到 NaN 作为输出
您可以查看下面的 3 种方法来解决您的问题:
const students = [
{ id: 1, name: "john", age: 25 },
{ id: 2, name: "jack", age: 31 },
{ id: 3, name: "joe", age: 26 },
{ id: 4, name: "jamal", age: 21 },
];
// Your approach:
function average_age() {
let total = 0;
let numberOfStudents = students.length;
students.map(student => {
total += Number(student.age);
});
return total / numberOfStudents;
}
// Second approach:
function average_age_second() {
let total = 0;
let numberOfStudents = students.length;
students.forEach(student => {
total += Number(student.age);
});
return total / numberOfStudents;
}
// Third approach:
function average_age_third() {
let numberOfStudents = students.length;
const total = students.reduce((partialSum, student) => partialSum + student.age, 0);
return total / numberOfStudents;
}
console.log("Average age is : " + average_age());
console.log("Average age is : " + average_age_second());
console.log("Average age is : " + average_age_third());
假设学生数组采用以下格式(在您收集输入后):
let students = [
{ name: "aaaa" , gender: "male" , age: 17, grade: 63 },
{ name: "bbbb" , gender: "male" , age: 20, grade: 70 },
{ name: "yyyy" , gender: "female", age: 18, grade: 45 },
{ name: "zzzz" , gender: "female", age: 18, grade: 70 },
{ name: "xxxx" , gender: "male" , age: 20, grade: 83 },
];
一种可能的解决方案如下:
let students = [
{ name: "aaaa" , gender: "male" , age: 17, grade: 63 },
{ name: "bbbb" , gender: "male" , age: 20, grade: 70 },
{ name: "yyyy" , gender: "female", age: 18, grade: 45 },
{ name: "zzzz" , gender: "female", age: 18, grade: 70 },
{ name: "xxxx" , gender: "male" , age: 20, grade: 83 },
];
//------------------------------
function average_age(students){
let total = 0;
students.forEach(s => total +=s.age);
return total/students.length
}
//------------------------------
console.log("Average age is : " + average_age(students));