Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

85
Views
crear propiedad de objeto asignando valor en un bucle for

En este ejercicio creo 3 funciones. score() para generar un número aleatorio. generateStudents() para crear un objeto de lista. El objeto tiene el formato {student:'name',marks:{...}} como se define en generateStudents() . En la última función, creo obj y obj1 . obj es una lista (asigne un valor igual a la función 2) y obj1 tiene el formato {"subject":...,"student_score:{}} .

Asigno key:value en un bucle for para crear la propiedad "student_score" (también un objeto), pero cuando salgo del bucle for e obj1 , no incluye la parte que tengo asignada en el bucle for.

¿Cómo puedo asignar key:value para una propiedad (también un objeto) usando for loop?

 var score = function getRandomMark(start, end, step) { var num = start var arr = [] arr.push(num) while (num <= (end - step)) { num += step arr.push(num) } var index = Math.floor(Math.random() * (arr.length)) return (arr[index]) } var generateStudents = function generateStudent(nameArr) { var studentArr = [] for (let i = 0; i < nameArr.length; i++) { var student = { "name": nameArr[i], "marks": { "literature": score(6, 10 , 0.5), "maths": score(6, 10 , 0.5), "chemistry": score(6, 10 , 0.5), "history": score(6, 10 , 0.5), "biology": score(6, 10 , 0.5) } } studentArr.push(student) } return studentArr } var markList = ["Chi", "Duc", "Huy"] var findStudentMinMax = function findStudentMinMax() { var obj = generateStudents(markList) console.log(typeof (obj)) var obj1 = {} var arr1 = [] const keys1 = Object.keys(obj[0]["marks"]) for (let i = 0; i < keys1.length; i++) { var name = obj[0]["name"] var markObj = obj[0]["marks"] obj1["subject"] = keys1[i] obj1["student_score"] = {} //get all subject for (let i = 0; i < obj1.length; i++) { obj1["student_score"][name] = markObj[obj1["subject"]] } console.log(obj1) arr1.push(obj1) } } findStudentMinMax()

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Hice algunos cambios en el código dentro findStudentMinMax .

  • obj cambiado para students , ya que hace que el código sea más fácil de entender.
  • Usé j en el bucle for interno ya que chocaba con el i que se usaba en el bucle externo.
  • obj1.length students.length el ciclo interno, ya que creo que estamos tratando de recorrer a los estudiantes.
  • Encontré el nombre del estudiante y las marcas en el bucle interno, ya que es donde estamos revisando a cada estudiante.

 var score = function getRandomMark(start, end, step) { var num = start var arr = [] arr.push(num) while (num <= (end - step)) { num += step arr.push(num) } var index = Math.floor(Math.random() * (arr.length)) return (arr[index]) } var generateStudents = function generateStudent(nameArr) { var studentArr = [] for (let i = 0; i < nameArr.length; i++) { var student = { "name": nameArr[i], "marks": { "literature": score(6, 10 , 0.5), "maths": score(6, 10 , 0.5), "chemistry": score(6, 10 , 0.5), "history": score(6, 10 , 0.5), "biology": score(6, 10 , 0.5) } } studentArr.push(student) } return studentArr } var markList = ["Chi", "Duc", "Huy"] var findStudentMinMax = function findStudentMinMax() { var students = generateStudents(markList) // changed name of obj to students to make things clearer // console.log(typeof (obj)) var obj1 = {} var arr1 = [] const keys1 = Object.keys(students[0]["marks"]) for (let i = 0; i < keys1.length; i++) { // var name = obj[0]["name"] // var markObj = students[0]["marks"] obj1["subject"] = keys1[i] obj1["student_score"] = {} //get all subject for (let j = 0; j < students.length; j++) { // j instead of i let name = students[j]["name"]; // getting name from students let markObj = students[j]["marks"] // getting markObj from students obj1["student_score"][name] = markObj[obj1["subject"]] } console.log(obj1) arr1.push(obj1) } } findStudentMinMax()

about 4 years ago · Juan Pablo Isaza Report

0

Parece que i < obj1.length; siempre devuelve false . Por lo tanto, su ciclo for nunca se ejecuta. Nunca puede acceder a .length en un objeto, por lo que debe cambiar el bucle for a i < Object.keys(obj1).length . Todavía no estoy seguro de cuál quiere que sea su objeto de salida porque solo indicó que deseaba insertar el valor dentro del objeto. A continuación encontrará el fragmento de código ejecutable.

 var score = function getRandomMark(start, end, step) { var num = start var arr = [] arr.push(num) while (num <= (end - step)) { num += step arr.push(num) } var index = Math.floor(Math.random() * (arr.length)) return (arr[index]) } var generateStudents = function generateStudent(nameArr) { var studentArr = [] for (let i = 0; i < nameArr.length; i++) { var student = { "name": nameArr[i], "marks": { "literature": score(6, 10 , 0.5), "maths": score(6, 10 , 0.5), "chemistry": score(6, 10 , 0.5), "history": score(6, 10 , 0.5), "biology": score(6, 10 , 0.5) } } studentArr.push(student) } return studentArr } var markList = ["Chi", "Duc", "Huy"] var findStudentMinMax = function findStudentMinMax() { var obj = generateStudents(markList) console.log(typeof (obj)) var obj1 = {} var arr1 = [] const keys1 = Object.keys(obj[0]["marks"]) for (let i = 0; i < keys1.length; i++) { var name = obj[0]["name"] var markObj = obj[0]["marks"] obj1["subject"] = keys1[i] obj1["student_score"] = {} //get all subject for (let i = 0; i < Object.keys(obj1).length; i++) { obj1["student_score"][name] = markObj[obj1["subject"]] } console.log(obj1) arr1.push(obj1) } } findStudentMinMax()

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!