题目描述
思路分析
只是一个排序问题.分俩种情况:
情况一:本月打卡人数少于5,返回全部打卡人员;
情况二:本月打卡人数大于5,判断打卡次数:返回打卡次数前五的员工;若打卡次数相同;则返回参与打卡时间较早的员工;若打卡次数和打卡时间均一致,则返回较小的id即可;
代码解析
let input = [
[11],
[4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2],
[0, 1, 7, 10],
[0, 1, 6, 10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[10],
[6, 10],
[7, 10]
]
let input1 = input.shift();
let input2 = input.shift();
let res = [];
let arr = [];
//判断打卡次数
for (let i = 0; i < input.length; i++) {
for (let j = 0; j < input[i].length; j++) {
if (arr.indexOf(input[i][j]) == -1) {
arr.push(input[i][j]);
res.push({
id: input[i][j],
count: 1
})
} else {
res.map(item => {
if (item.id == input[i][j]) item.count++
})
}
}
}
//判断打卡时间与id
res.sort((a, b) => {
var value1 = a.count,
value2 = b.count;
if (value1 === value2) {
return a.id - b.id;
}
return value2 - value1;
})
console.log('res=>', res);
后话
只是记录,正在找工作中,各位老板缺前端的可以私信,会vue,react,ts,js,22届本科毕业,一年工作经验