英文:
JSON data to calculate the total attendance in percentage?
问题
You can calculate the total attendance for a student with the given data by counting the key-value pairs with a value of 1 in the JSON object. Here's a JavaScript code snippet to do that:
const studentData = {
"CGMM": {
"17:4:2023": 1,
"19:4:2023": 0
},
"CNS": {
"17:4:2023": 1
},
"ML": {
"17:4:2023": 1,
"16:4:2023": 1
}
};
let totalPresent = 0;
let totalAttendance = 0;
for (const subject in studentData) {
for (const date in studentData[subject]) {
if (studentData[subject][date] === 1) {
totalPresent++;
}
totalAttendance++;
}
}
const attendancePercentage = (totalPresent / totalAttendance) * 100;
console.log("Total Attendance Percentage: " + attendancePercentage + "%");
This code will count the key-value pairs with a value of 1 and calculate the total attendance percentage for the student.
英文:
I have this attendance data for a particular student. If he was present then marked 1 else marked 0 in the respected subject. How I can calculate the total attendance out of it. Please help me out...
{
"CGMM": {
"17:4:2023": 1,
"19:4:2023": 0
},
"CNS": {
"17:4:2023": 1
},
"ML": {
"17:4:2023": 1,
"16:4:2023": 1
}
}
I need that I can count all those key-value pair which has a value equals 1 and then divide it by total no. of key-value pairs exist which I am finding by:
const attendenceInML = Object.keys(student.ML).length;
const attendenceInSEA = Object.keys(student.SEA).length;
const attendenceInCGMM = Object.keys(student.CGMM).length;
const attendenceInCNS = Object.keys(student.CNS).length;
const total = attendenceInML+ attendenceInSEA+ attendenceInCGMM+ attendenceInCNS;
and then multipy the resultant with 100 to get the total attendance in percentage, but I don't know how to fetch only those key-value pairs count which has value as 1. Please help me.
答案1
得分: 0
代码部分不需要翻译,以下是已翻译的内容:
"格式相当糟糕,但您仍然可以使用 for in
语法迭代对象:"
"const data = JSON.parse(input);"
"let totalClasses = 0;"
"let attendedClasses = 0;"
"for (const subject in data) {"
" if (data.hasOwnProperty(subject)) { //以防对象为空而引发运行时错误"
" const dates = data[subject];"
" for (const date in dates) {"
" if (dates.hasOwnProperty(date)) {"
" totalClasses++;"
" attendedClasses += dates[date];"
" }"
" }"
" }"
"}"
"const attendancePercentage = (attendedClasses / totalClasses) * 100;"
英文:
The format is pretty terrible, but you can still iterate over objects with for in
syntax:
const data = JSON.parse(input);
let totalClasses = 0;
let attendedClasses = 0;
for (const subject in data) {
if (data.hasOwnProperty(subject)) { //So that we don't get a runtime error if the object is empty
const dates = data[subject];
for (const date in dates) {
if (dates.hasOwnProperty(date)) {
totalClasses++;
attendedClasses += dates[date];
}
}
}
}
const attendancePercentage = (attendedClasses / totalClasses) * 100;
答案2
得分: 0
你可以使用这段代码来减少数据并计算总和/平均值。类似这样的:
const data = {
"CGMM": {
"17:4:2023": 1,
"19:4:2023": 0
},
"CNS": {
"17:4:2023": 1
},
"ML": {
"17:4:2023": 1,
"16:4:2023": 1
}
};
const totalAttendance = Object.values(data)
.reduce((acc, v) => acc.concat(Object.values(v)), []);
const sum = totalAttendance.reduce((acc, v) => acc + v, 0);
const attendance = sum / totalAttendance.length * 100;
console.log(`value 1的总和: ${sum}\n出勤百分比: ${attendance}%`);
请注意,我只提供了代码的翻译部分。
英文:
You can reduce the data and calculate sum/average with it. Something like:
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
const data = {
"CGMM": {
"17:4:2023": 1,
"19:4:2023": 0
},
"CNS": {
"17:4:2023": 1
},
"ML": {
"17:4:2023": 1,
"16:4:2023": 1
}
};
const totalAttendance = Object.values(data)
.reduce( (acc, v) => acc.concat(Object.values(v)), [] );
const sum = totalAttendance.reduce( (acc, v) => acc + v, 0 );
const attendance = sum / totalAttendance.length * 100;
console.log( `sum of value 1: ${sum}\nattendance percentage: ${
attendance}%` );
<!-- end snippet -->
答案3
得分: 0
你可以使用Object.entries
、Object.values
和.reduce
的组合来完成它。
let student = {
"CGMM": {
"17:4:2023": 1,
"19:4:2023": 0
},
"CNS": {
"17:4:2023": 1
},
"ML": {
"17:4:2023": 1,
"16:4:2023": 1
}
}
let result = Object.entries(student)
.reduce((prev, [key, objValue]) => prev + Object.values(objValue)
.reduce((prev, curr) => prev + curr, 0), 0)
console.log(result)
注意:我只提供代码的翻译,不回答翻译问题。
英文:
You can do it with an combination of Object.entries
, Object.values
and .reduce
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
let student = {
"CGMM": {
"17:4:2023": 1,
"19:4:2023": 0
},
"CNS": {
"17:4:2023": 1
},
"ML": {
"17:4:2023": 1,
"16:4:2023": 1
}
}
let result = Object.entries(student)
.reduce((prev, [key, objValue]) => prev + Object.values(objValue)
.reduce((prev,curr) => prev + curr,0),0)
console.log(result)
<!-- end snippet -->
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论