猫史档案馆


【JS教程】搜寻关键词的代码(搜索的非常的慢eee)

用户:蓝矮爱乐蓝矮爱乐查看:1 回复:4 评论:1 创建时间:2022-04-16T18:52:07


const $letter_and_number$ = ['a','b','c','d','e','f',//先把26字母全都填写表格里
    'g','h','i','j','k','l','m','n','o','p','q',
    'r','s','t','u','v','w','x','y','z'
];
findKeyword=async function findKeyword(length){//创建一个函数
    if(length<=5){//当length大于5时,工作量会非常的大,应该给个限制
        var d='';var e=''//创建好遍历字母变量(d)和d结束时的值(e)
        for(var a=0;a<length;a++){//重复输入的数字次
            if(d==''){d='a'}else d=String(d)+'a';//初始时值是好几个a
            if(e==''){e='z'}else e=String(e)+'z';//结束时值是好几个z
        }
        keywordList=[]//搜索关键词的列表
        var c=0//弄个变量(用处后面会说)
        while(true){//一直翻找关键词
            if(c<=10000){//如果已经翻找了一万次,那么就要休息1毫秒,继续翻找
                c++ //不休息的话会导致服务器崩溃
            }else{
                c=0
                await new Promise((resolve)=>{setTimeout(()=>{resolve()},1)})
            }
            if(d==e){//如果寻找达到结束的值
                return keywordList//返回关键词的数组
            }
            d=addLetter(d);//将d变量以26进制的方法计算+1
            if(isKeyword(d)){//判断是否为关键词
                keywordList.push(d)//如果是,就将关键词加入keywordList这个数组中
                world.say(d)//调试作用
            }
        }
    }else{//如果填写的数字大于5,服务器工作量会很大,就抛出错误
        throw new TypeError('functions parameter \'length\' too large');
    }
};
isKeyword=function isKeyword(records){//创建一个函数,以便判断关键词
    try{//尝试创建变量名为输入的字串符,如果创建成功,则会删除,并判断不是关键词
        if(records=='set'|| //特殊情况记忆
        records=='get'||
        records=='undefined'||
        records=='await'||
        records=='of'){
            var ifs = true
        }
        if(typeof ifs=='undefined'){
            eval('var '+records)
            eval('delete '+records)
            var ifs=false
        }
    }catch{
        var ifs=true
    }finally{
        return ifs//返回判断的结果
    }
}

addLetter=function addLetter(record){//26进制增加1方法
    var t = [];//用于将26进制转换十进制
    for(let e=0;e<record.length;e++){
        t.push($letter_and_number$.indexOf(record[e]));
    };
    var c=t.length-1;while(true){
        t[c]+=1;
        if(t[c]==26){
            t[c]=0;c--;
            continue
        }else{
            var d='';
            for(const r of t){
                if(d==''){
                    d=$letter_and_number$[r]
                }else{
                    d=String(d)+String($letter_and_number$[r])
                }
            };
            return d
        }
    }
}


回复

上一页1 页 / 共 1下一页
灵清帝王吃爆一切厕所灵清帝王吃爆一切厕所

沙发

点赞0


评论


编码喵编码喵

用正则会更加简便

点赞0


评论


Ezra__Ezra__

/abc/比这简单多了()

点赞0


评论


喵喵咪awa喵喵咪awa

迷雾能帮我做图吗

点赞0


评论