有一个长度为5的学生数组["jack","rose","john","kitty","doggy"],有10000道题,为每个学生随机抽取5道,生成抽题结果并输出(题号可以重)
输出结果 {jack:[3,1,4,5,9],rose:[2,6,5,3,8]...}
思考:数组每个值要变成对象中每一个属性;需要遍历;10000道题是随机需要mathAPI中来操作;
熟练操作数组的批处理API;熟悉this的指向问题;以下为代码逻辑;
此题要分两个部分一部分试题数组也就是对象的键值部分;建议拆分成一个函数轮子,方便使用;
其二是学生数组转对象属性的部分使用批处理和遍历来完成;
代码区
function fi11() {
// 封装一个轮子随机五道题添加到数组
function ram(a) {
let arr1 = []
for (let i = 0; i < 5; i++) {
var newValue = Math.round(Math.random() * a)
let temp = arr1.push(newValue)
}
return arr1
}
// 学生数组的拆分
let arr = ["jack", "rose", "john", "kitty", "doggy"]
let obj = {}
// 第二种遍历方法拆分后每个学生称为obj中的属性
arr.forEach(function (value, index, arr) {
this[value] = ram(10000)
}, obj)//this的指向为obj
// 打印
console.log(obj);
}
fi11()
2. 生成50个学生的随机成绩,结构如下:然后过滤出不及格的学生形成一个新数组并输出(必须使用filter) [{name:"学生1",so:88},{name:"学生2",so:53},...]
//首先先把空数组对象建立
let arr = []
let obj = {}
let obj1 = {}
//封装一个函数方便随机分数
function ram(a, b) {
return Math.round(a + (b - a) * Math.random())
}
//建立五十个学生档案
for (let i = 0; i < 50; i++) {
//对象的添加
obj['name'] = `学生${i+1}`
obj['so'] = ram(0, 100)
//将objpush添加到arr空数组中
arr.push(obj)
//*将对象新地址重新变空
obj = {}
}
//打印测试五十个arr值
console.log(arr);
//filter去遍历五十个分数
newArr = arr.filter(function (item, index, c) {
//返回不大于60分的即不及格分数
return !(item['so'] >= 60)
})
console.log(newArr);