首页 > 编程知识 正文

js数组去重和排序的方法,js两个数组去重复

时间:2023-05-03 08:18:13 阅读:235440 作者:4177

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分) ............

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。