javascript - JS/Jquery - 如果输入有任何数组名称,则返回关联值

标签 javascript jquery foreach associative-array

这是 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/

相关文章:

javascript - Mongoose :如何替换子文档数组?

javascript - jquery根据元素div大小调整文本大小

php - 使用 Foreach 用数组更新 MySQL 表

C# foreach 抽象的子级

javascript - chop 循环内文本的字符

javascript - 在 IFRAME 沙箱模式下 Google App 脚本中获取错误的 url

jquery - 如何使用 z-index 和绝对定位将我的内联按钮居中?

java - 在增强的 for 循环中使用 equals() 和 ==

javascript - 将元素中的 CSS 与页面的其余部分隔离

javascript - jquery 悬停效果不能正常工作