Javascript Js-规则匹配数组和字符串

Javascript Js-规则匹配数组和字符串,javascript,arrays,string,expression,match,Javascript,Arrays,String,Expression,Match,第一个帖子,请温柔一点;D 代码: 那么,我想做什么: 我想将searchstring的内容与每个按键的名称数组相匹配。 最后,每一个不是以f.e.“A”开头的元素都应该消失。 希望你们都能理解我蹩脚的英语,并同情我(:你们可以这么做 将keyDown回调添加到输入(我假设它是一个HTMLInputElement) 在keyDown回调中,延迟对searchNameFromInput函数的调用,以便在检查输入时输入值已经更改 通过创建一个正则表达式来过滤nameArray中的元素,该正则表达式从

第一个帖子,请温柔一点;D

代码:

那么,我想做什么: 我想将searchstring的内容与每个按键的名称数组相匹配。 最后,每一个不是以f.e.“A”开头的元素都应该消失。 希望你们都能理解我蹩脚的英语,并同情我(:

你们可以这么做
  • 将keyDown回调添加到输入(我假设它是一个
    HTMLInputElement

  • 在keyDown回调中,延迟对
    searchNameFromInput
    函数的调用,以便在检查输入时输入值已经更改

  • 通过创建一个正则表达式来过滤
    nameArray
    中的元素,该正则表达式从一开始就检查名称与输入值的匹配情况(例如:
    “an”
    将匹配
    “anivia”
    “annie”

  • 代码如下所示

    var nameArray = ["aatrox","ahri","akali","alistar","amumu","anivia","annie","ashe", "blitzcrank",   "brand",    "caitlyn",  "cassiopeia",   "cho'gath", "corki",    "darius",   "diana",    "draven",   "dr. mundo",    "elise",    "evelynn",  "ezreal",   "fiddlesticks", "fiora",    "fizz", "galio",    "gangplank",    "garen",    "gragas",   "graves",   "hecarim",  "heimerdinger", "irelia",   "janna",    "jarvan iv",    "jax",  "jayce",    "karma",    "karthus",  "kassadin", "katarina", "kayle",    "kennen",   "kha'zix",  "kog'maw",  "leblanc",  "lee sin",  "leona",    "lissandra",    "lucian",   "lulu", "lux",  "malphite", "malzahar", "maokai",   "master yi",    "m.fortune",    "mordekaiser",  "morgana",  "nami", "nasus",    "nautilus", "nidalee",  "nocturne", "nunu", "olaf", "orianna",  "pantheon", "poppy",    "quinn",    "rammus",   "renekton", "rengar",   "riven",    "rumble",   "ryze", "sejuani",  "shaco",    "shen", "shyvana",  "singed",   "sion", "sivir",    "skarner",  "sona", "soraka",   "swain",    "syndra",   "talon",    "taric",    "teemo",    "thresh",   "tristana", "trundle",  "tryndamere",   "twitch",   "twisted fate", "udyr", "urgot",    "varus",    "vayne",    "veigar",   "vi",   "viktor",   "vladimir", "volibear", "warwick",  "wukong",   "xerath",   "xin zhao", "yorick",   "zac",  "zed",  "ziggs",    "zilean",   "zyra", "jinx"],
    input = document.getElementById('foo');
    
    // I also assume IE9+ for addEventListener
    input.addEventListener('keydown', function keyDown(e) {
        e = e || window.event;
        // just bind the input element as a parameter
        // for the function searchNameFromInput
        setTimeout(searchNameFromInput.bind(null, e.target||e.srcElement), 80);
    }, false);
    
    function searchNameFromInput(input) {
        if (input.value.length) {
             console.log(
                nameArray.filter(function (name) {
                    return new RegExp('^' + input.value).test(name);
                })
            );
        }
    }
    

    您需要使用
    asciiNum
    asciiLet
    吗?我不这样认为-但我稍后会在最后一个函数中使用它们,所以可以先使用秒数组,然后使用解析方法(:
    var nameArray = ["aatrox","ahri","akali","alistar","amumu","anivia","annie","ashe", "blitzcrank",   "brand",    "caitlyn",  "cassiopeia",   "cho'gath", "corki",    "darius",   "diana",    "draven",   "dr. mundo",    "elise",    "evelynn",  "ezreal",   "fiddlesticks", "fiora",    "fizz", "galio",    "gangplank",    "garen",    "gragas",   "graves",   "hecarim",  "heimerdinger", "irelia",   "janna",    "jarvan iv",    "jax",  "jayce",    "karma",    "karthus",  "kassadin", "katarina", "kayle",    "kennen",   "kha'zix",  "kog'maw",  "leblanc",  "lee sin",  "leona",    "lissandra",    "lucian",   "lulu", "lux",  "malphite", "malzahar", "maokai",   "master yi",    "m.fortune",    "mordekaiser",  "morgana",  "nami", "nasus",    "nautilus", "nidalee",  "nocturne", "nunu", "olaf", "orianna",  "pantheon", "poppy",    "quinn",    "rammus",   "renekton", "rengar",   "riven",    "rumble",   "ryze", "sejuani",  "shaco",    "shen", "shyvana",  "singed",   "sion", "sivir",    "skarner",  "sona", "soraka",   "swain",    "syndra",   "talon",    "taric",    "teemo",    "thresh",   "tristana", "trundle",  "tryndamere",   "twitch",   "twisted fate", "udyr", "urgot",    "varus",    "vayne",    "veigar",   "vi",   "viktor",   "vladimir", "volibear", "warwick",  "wukong",   "xerath",   "xin zhao", "yorick",   "zac",  "zed",  "ziggs",    "zilean",   "zyra", "jinx"];
        var asciiNum = ['27','65','66','67','68','69','70','71','72','73','74','75','76','77','78','79','80','81','82','83','84','85','86','87','88','89','90']
        var asciiLet=  ['Esc','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    
    var nameArray = ["aatrox","ahri","akali","alistar","amumu","anivia","annie","ashe", "blitzcrank",   "brand",    "caitlyn",  "cassiopeia",   "cho'gath", "corki",    "darius",   "diana",    "draven",   "dr. mundo",    "elise",    "evelynn",  "ezreal",   "fiddlesticks", "fiora",    "fizz", "galio",    "gangplank",    "garen",    "gragas",   "graves",   "hecarim",  "heimerdinger", "irelia",   "janna",    "jarvan iv",    "jax",  "jayce",    "karma",    "karthus",  "kassadin", "katarina", "kayle",    "kennen",   "kha'zix",  "kog'maw",  "leblanc",  "lee sin",  "leona",    "lissandra",    "lucian",   "lulu", "lux",  "malphite", "malzahar", "maokai",   "master yi",    "m.fortune",    "mordekaiser",  "morgana",  "nami", "nasus",    "nautilus", "nidalee",  "nocturne", "nunu", "olaf", "orianna",  "pantheon", "poppy",    "quinn",    "rammus",   "renekton", "rengar",   "riven",    "rumble",   "ryze", "sejuani",  "shaco",    "shen", "shyvana",  "singed",   "sion", "sivir",    "skarner",  "sona", "soraka",   "swain",    "syndra",   "talon",    "taric",    "teemo",    "thresh",   "tristana", "trundle",  "tryndamere",   "twitch",   "twisted fate", "udyr", "urgot",    "varus",    "vayne",    "veigar",   "vi",   "viktor",   "vladimir", "volibear", "warwick",  "wukong",   "xerath",   "xin zhao", "yorick",   "zac",  "zed",  "ziggs",    "zilean",   "zyra", "jinx"],
    input = document.getElementById('foo');
    
    // I also assume IE9+ for addEventListener
    input.addEventListener('keydown', function keyDown(e) {
        e = e || window.event;
        // just bind the input element as a parameter
        // for the function searchNameFromInput
        setTimeout(searchNameFromInput.bind(null, e.target||e.srcElement), 80);
    }, false);
    
    function searchNameFromInput(input) {
        if (input.value.length) {
             console.log(
                nameArray.filter(function (name) {
                    return new RegExp('^' + input.value).test(name);
                })
            );
        }
    }