求大佬帮忙解析json对象数组

现有数据:

var data = {"学生":["小红","小明","小白"],"班级":["1班","2班"],"性别":["nan","nv"]};

需要解析成

[
{"学生":"小红","班级":"1班"},
{"学生":"小明","班级":"1班"},
{"学生":"小白","班级":"1班"},
{"学生":"小红","班级":"2班"},
{"学生":"小明","班级":"2班"},
{"学生":"小白","班级":"2班"}
]

但是有额外要求,这个对象的key的数量不确定,value的值的数组长度也不确定

求个大佬贴个代码

var data = {"学生":["小红","小明","小白"],"班级":["1班","2班"],"性别":["nan","nv"]};
var keys = ["学生","班级"]; //需要提取的key
var arr = [{}];
for (var i = 0; i < keys.length; i++) {
	var t = [];
	for (var k = 0; k < data[keys[i]].length; k++)
		for (var j = 0; j < arr.length; j++)
			t.push({...arr[j] ,[keys[i]]:data[keys[i]][k]});
	arr = t;
}
console.log(arr);

额外要求看不明白,只看data和解析后的数据,是所有学生匹配所有班
let {students,classes} = data ;
return students.flatMap(s=>return classes.map(c=>({student:s,class:c})))