1:去重
参数:data为数组里面多个对象
目的:data中方有多种类型题目并且多个,需要去重后,每个题目只需要重复的获取一个就可以
//题目去重
let peons = data.reduce((cur,next) =>{
obj[next.typeName] ? '' : obj[next.typeName] = true &&cur.push(next)
return cur
},[])
let anwerType = []
peons.forEach(item =>{
anwerType.push(item.typeName)
})
2:动态生成多个数组
首先anwerType和data进行两个循环,判断两个的typeName是否相同
let newList =[]
let objs ={}
anwerType.forEach(function(item,index){
data.forEach(function(e){
if(item == e.typeName) { //判断是否相同
newList.push(e)
if(objs[e.typeName]){
objs[e.typeName].push(e) //这里有几种题就输出多种数组
}else {
objs[e.typeName] = [] //如果不同先置为空
objs[e.typeName].push(e) //这里是为了将第一条数据存入,如果不要每 次循环都会少一条数据
}
}
})
})
这里是得到的objs的结果,obj的key就为typeName
再将objs循环,进行进一步判断
for(var k in objs) { //将对象循环 k为对象的键名
indexs++
newList.forEach(function(item) {
if(k == item.typeName) { //判断键名等于typeName时
let length = objs[item.typeName].length //获取每个相同typeName的数组的长度
let score = objs[item.typeName][0].score //获取每一题的分数
let result = Number(objs[item.typeName][0].score ) * score //获取总分数
item.titleName=`
${titlesNum[indexs-1]}${item.typeName}(共${length}题,每题${score}分,共计${result}分)
`
}
})
}
结果:
一、A1型题(共11题,每题1分,共计11分)
二、A2型题(共9题,每题1分,共计9分)
三、A3/A4型题(共6题,每题1分,共计6分)
............