这是 question 的延续我昨天问过,我问如何确定输入是否与数组元素的任何部分匹配('sun'&'sunday' = 'sun')。这就是解决方案。
var _array = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
for (var i = 0; i < _array.length; i++) {
if (_val.indexOf(_array[i]) != -1) {
$('span').text('it worked');
return;
}
}
$('span').text('nothing');
我刚刚意识到,如果为真,我需要将其与关联数组中的全名值进行匹配。例如:如果您输入 ('sun'、'sund'、'sunda' 或 'sunday'),它将返回 'sunday'。理想情况下,它不区分大小写,但我可以自己解决。
var _array = {
"sun" : "sunday",
"mon" : "monday",
"tue" : "tuesday",
"wed" : "wednesday",
"thu" : "thursday",
"fri" : "friday",
"sat" : "saturday"
};
这是second part的解决方案。我意识到我可以删除 else {
$('p').text('');
}
在此示例中,但这在我的项目代码中不起作用。
最佳答案
如果我从你之前的问题中了解到,如果文本输入的任何部分与数组中的某个项目匹配,那么它被认为是匹配的。
现在您似乎想要将短数组版本映射到完整单词。
如果这听起来不错,您可以从数组中获取短值,并创建短版本到长版本的映射。
var map = {
sun: "sunday",
mon: "monday",
tue: "tuesday",
wed: "wednesday",
thu: "thursday",
fri: "friday",
sat: "saturday"
};
然后获取数组值,并将其作为键传递给 map 。
var _array = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
_val = _val.toLowerCase();
for (var i = 0; i < _array.length; i++) {
if (_val.indexOf(_array[i]) != -1) {
$('span').text('it worked');
alert(map[_array[i]]);
return;
}
}
您还说您希望它不区分大小写,因此我将 toLowerCase() 添加到 _val。
关于javascript - JS/Jquery - 如果输入有任何数组名称,则返回关联值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979390/