输入值以部分匹配数组中的项目并返回 true

Posted

技术标签:

【中文标题】输入值以部分匹配数组中的项目并返回 true【英文标题】:Input value to partially match item in array and return true 【发布时间】:2018-07-08 11:23:47 【问题描述】:

我目前正在制作一个表单,用户可以通过输入他们的邮政编码来检查我们是否向他们的区域送货。如果输入值部分匹配“E1”,我有一个工作代码,但如果该值部分匹配“E1,E2,E3 一直到 E18,我需要它来工作。

例如。如果用户输入 E2 4EJ,则返回 true。

我目前正在使用的代码如下。任何关于我需要改变的建议将不胜感激!

HTML

<form id="searchForm">
    <input type="text" placeholder="First half of your postcode...">
    <button type="submit" value="Search">Submit</button> 
</form>

<div id="result"></div>

jQuery

$('#searchForm').submit(function()
    var postcode = $('#searchForm input').val();  
    if (postcode.indexOf('E1') == 0) 
        $('#result').html('Yes, we deliver!');
     else 
        $('#result').html('Sorry, we don't deliver!');
    
    return false;
);

我正在玩的代码

 var postcodes = ["E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "E13", "E14", "E15", "E16", "E17", "E18"];

编辑

在得到下面的正确答案后,我的最终代码是:

var postcodes = ["E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "E10", "E11", "E12", "E13", "E14", "E15", "E16", "E17", "E18"];

$('#searchForm').submit(function(e)
    var postcode = $('#searchForm input').val().toUpperCase();
    var postcodeAreaDeliverable = false;

    $.each( postcodes, function( index, value ) 
        if (postcode.match("^" + value)) 
            postcodeAreaDeliverable = true;
        
     );

     if (postcodeAreaDeliverable) 
         $('#result').html('Yes, we deliver!');
      else 
         $('#result').html('Sorry, we dont deliver!');
     
return false;
);

【问题讨论】:

您正在处理的代码只是一个数组。也许您可以考虑如何遍历数组... 好的,所以我可能需要使用 $.each 来检查邮政编码 var 中的每个项目,然后确定输入值是否与 var 中的部分匹配? 【参考方案1】:

您可以迭代每个邮政编码并寻找匹配项。如果匹配显示正面消息,否则显示负面消息:

var postcodeAreaDeliverable = false;
$.each( obj, function( key, value ) 
  if (obj.match("^" + value) 
    postcodeAreaDeliverable = true;
  
);
if (postcodeAreaDeliverable) 
  $('#result').html('Yes, we deliver!');
 else 
  $('#result').html('Sorry, we don't deliver!');

【讨论】:

虽然这段代码可能会回答这个问题,但最好解释一下代码的作用,而不是重复解决方案。请参阅How to Answer 了解更多信息。 很抱歉。我不得不匆忙离开大楼。发布了那里的内容。 谢谢!我能够根据自己的需要进行调整,并且效果很好。

以上是关于输入值以部分匹配数组中的项目并返回 true的主要内容,如果未能解决你的问题,请参考以下文章

altivec 提取向量的一部分?

比较嵌套循环中的信息并在匹配时进行标记

给定数组,编写一个查找最大值并返回匹配字符串的函数

C# 2D 数组匹配并返回 1 维

Hive查询:匹配列数组的字符串值以生成标志

使用 Linq 和 Regex 比较 2 个字符串数组以进行部分匹配