题解 | #简单错误记录#
简单错误记录
https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb
自己写的笨办法
let resultArr = []; //错误记录结合
let dataArr = []; //数据集合
while ((line = await readline())) {
let fileUrl = line.split(" ")[0];
let listNum = line.split(" ")[1]; //行号
let nameArr = fileUrl.split("\\");
let name = nameArr[nameArr.length - 1].substring(name.length - 16); //文件名称
// 寻找是否之前出现过相同用例,如果有则不会新增
let flag = dataArr.find((item) => {
return item.url === fileUrl && item.line === listNum;
});
if (!flag) {
dataArr.push({
url: fileUrl,
name: name,
line: listNum,
});
}
}
dataArr.forEach((item) => {
// 是否存在相同错误记录
let target = resultArr.find(
(i) => i.name === item.name && i.line === item.line
);
if (!target) {
resultArr.push({
...item,
num: 1,
});
} else {
let index = resultArr.indexOf(target);
if (resultArr[index]) {
resultArr[index].num += 1;
}
}
});
// 记录条数少时从头开始输出
let length = resultArr.length <= 8 ? 0 : resultArr.length - 8;
for (let i = length; i < resultArr.length; i++) {
let item = resultArr[i];
console.log(`${item.name} ${item.line} ${item.num}`);
}
改良一部分后的代码
let dataArr = []; //错误记录结合
let result = {}; //数据集合
while ((line = await readline())) {
let fileUrl = line.split(" ")[0];
let listNum = line.split(" ")[1]; //行号
let nameArr = fileUrl.split("\\");
let name = nameArr[nameArr.length - 1];
name = name.substring(name.length - 16); //文件名称
// 寻找是否之前出现过相同用例,如果有则不会新增
let flag = dataArr.find((item) => {
return item === fileUrl + " " + listNum;
});
dataArr.push(fileUrl + " " + listNum);
if (!flag) {
let key = name + " " + listNum;
if (result[key]) {
result[key] += 1;
} else {
result[key] = 1;
}
}
}
let d = Object.keys(result).slice(-8);
for (let i of d) {
console.log(i + " " + result[i]);
}
查看3道真题和解析
上海得物信息集团有限公司公司福利 1263人发布
