题解 | #简单错误记录#
简单错误记录
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]);
    }
查看22道真题和解析
