Así que he estado tratando de resolver esta tarea de la universidad. Tengo una comprensión aproximada de cómo resolver esto, pero solo se me ocurrieron las soluciones que no funcionan o que realmente no corresponden a los requisitos de la tarea.
La tarea se ve así.
Cree un objeto usando Inicializador de objetos, asigne propiedades que lo describan (nombre, apellido, número de índice, tabla con calificaciones). Asigne un método al objeto que calcula el promedio de calificaciones
Esta es la solución que funciona, pero no es exactamente lo que se supone que debe hacerse.
function Grade (math, science, programming, management){ this.math = math; this.science = science; this.programming = programming; this.management = management; return (math + science + programming + management)/arguments.length; } const student = { name: 'John', surname: 'Smith', index: 'x4sx4sd', grade: Grade(5,4,5,5) } console.log(student);Este es mi intento que no funciona pero, en mi opinión, está más cerca de la verdad pero sin la parte promedio.
const student = { name: 'John', surname: 'Smith', index: 'xxxxx', grade: { math: 5, science: 5, language: 5, marketing: 5, management: 5 }, gradeAvg: function(grade){ grade=this.grade; let total = 0; for (let value in object){ total += grade[value] } return total; } } console.log(student);Entiendo que es una pregunta de nooby, he intentado buscar en Google lo más que he podido pero no pude encontrar nada, cualquier ayuda sería apreciada.
Cambie su gradeAvg en una función getter que se ejecutará cuando cargue el objeto. Además, para obtener el promedio (que requiere un conteo), puede acceder al conteo usando Object.entries (que convierte el objeto en una matriz) y luego obtener la longitud
const student = { name: 'John', surname: 'Smith', index: 'xxxxx', grade: { math: 2, science: 5, language: 5, marketing: 1, management: 5 }, get gradeAvg() { let total = 0; for (let value in this.grade) { total += this.grade[value] } return total / Object.entries(this.grade).length; } } console.log(student);Entonces, antes que nada, debe convertir el objeto de calificación de Objeto a matriz para que pueda sumar todos los elementos. Object.values hace eso, por lo que {a: 1, b: 2} se convertiría en [1, 2] . A continuación, debe obtener el número de calificaciones para poder dividir la suma para obtener el promedio. Lo último que necesita es una suma de la matriz que hemos creado anteriormente, el método de reduce de matriz se usa para reducir la matriz en un valor.
get GradeAvg() { const gradesArray = Object.values(this.grade); const gradesCount = gradesArray.length; const gradesSum = gradesArray.reduce((sum, current) => { sum += current; return sum; }) return gradesSum / gradesCount; }