简单错误记录-牛客网【JS/JavaScript】

简单错误记录-牛客网【JS/JavaScript】

题目

开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
处理:
1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并)
2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并)
3.输入的文件可能带路径,记录文件名称不能带路径

数据范围:输入错误记录数量满足 1 \le n \le 1000 \1≤n≤1000  ,每条记录的长度满足 1 \le len \le 50 \1≤len≤50 
const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let name_lines = [];
const names = [];
const lines = [];
const nums = [];
const res = [];
let input = '' ;
let input_array = []
rl.on('line', function (line) {
    input = input + '$' + line;
}
)

process.stdin.on('end', function () {
    input_array = input.split("$").filter(it => it);
    // 处理input
    input_array.forEach(it => {
        const temps = it.split('\\');
        const temp = temps[temps.length - 1];

        if(name_lines.includes(temp)){
            const idx = name_lines.indexOf(temp);
            if(idx > -1){
                res[idx].nums = res[idx].nums + 1;
            }
        }else {
            name_lines.push(temp);
            const t = {
            name_line: temp,
            name: temp.split(' ')[0],
            lines: temp.split(' ')[1],
            nums: 1,
            }
            res.push(t);
        }
    });

var compare = function (obj1, obj2) {
    var val1 = obj1.nums;
    var val2 = obj2.nums;
    if (val1 < val2) {
        return 1;
    } else if (val1 > val2) {
        return -1;
    } else {
        return 0;
    }            
} 
res.sort(compare)
if(res.length > 8){
    for(let i = 0; i< 8; i++){
        const nl = res[i].name.length > 16 ? res[i].name.slice(-16) : res[i].name;
        console.log(`${nl} ${res[i].lines} ${res[i].nums}`);
    }
}else {
  res.forEach(it => {
    const nl = it.name.length > 16 ? it.name.slice(-16) : it.name;
    console.log(`${nl} ${it.lines} ${it.nums}`);
  })
}
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值