[英]Js - regular matching Array and String
第一篇文章,请保持温柔; D
码:
var matchString;
var searchString = '';
var lastKey;
function keyDown(e) {
if (!e)
e = window.e;
for (var i=0; i<asciiNum.length;i++){
if (e.keyCode == asciiNum[i]){
console.log('asciiLet: '+asciiLet[i]);
lastKey = asciiLet[i];
searchString +=lastKey;
}else if(e.keyCode == "27"){
searchString="";
console.log(searchsrtring)
}
}
}
function keyUp(e) {
console.log('left: '+searchString)
for (var i=0; i<champArray.length; i++){
}
}
数组:
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']
所以,我想做什么:实际上,我想在每个按下的键中都将searchstring的内容与nameArray进行匹配。 最后,每个不以fe“ A”开头的元素都应淡出。 希望大家能听懂我的英语,并会怜悯我(:
将keyDown回调添加到输入中(我假设它是HTMLInputElement
)
在keyDown回调延迟中,将调用searchNameFromInput
函数,以便在检查输入时已经更改了输入的值。
通过创建一个正则表达式来过滤nameArray
的元素,该正则表达式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);
})
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.