In this excercise I create 3 function. score() to generate a random Number. generateStudents() to create a list Object. Object has format {student:'name',marks:{...}} as define in generateStudents(). In last function, I create obj and obj1. obj is a list (assign value equal to function 2) and obj1 has format {"subject":...,"student_score:{}}.
I assign key:value in a for loop to create the property "student_score" (also an object) but when i get out of for loop and print obj1 it does not include the part i have assign in for loop.
How can i assign key:value for a property (also an object) using 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()