【问题标题】:Javascript match string against string in arrayJavascript将字符串与数组中的字符串匹配
【发布时间】:2013-04-25 10:27:52
【问题描述】:

我有一组输入字段,每个字段都有“smarty_address_check”类

<input type="text" class="smarty_address_check" value="this is a new value" />
<input type="text" class="smarty_address_check" value="this value has been unchanged" />
etc

我需要做的是

  • 对于每个输入字段值
  • 将该值与数组中的每个值进行比较(数组称为 smarty_address_check)
  • 如果匹配,就做点什么。

数组中的值是输入字段的原始默认值/示例值,如果用户没有更改它们,我想对此采取行动。

var exampleAddressPresent = false;
    for (var i = 0; i<smarty_address_check.length; i++) {
        $('.smarty_address_check').each(function() { //For each of inputs
            if (smarty_address_check[i].match($(this).val())) { //if match against array
                var exampleAddressPresent = true; //Example address present
                console.log($(this).attr("id")); //store id of unchanged input

            }
        });
    }

我觉得这是一个糟糕的编程逻辑,更不用说我无法弄清楚它为什么不能正常工作。我基本上想做的就是将一个字符串与另一个字符串进行比较。有没有人知道更好的方法来解决这个问题?

【问题讨论】:

  • 删除 exampleAddressPresent 上的第二个“var”关键字。因为它在本地重新定义了它,你将无法在全局范围内使用它。

标签: javascript jquery logic


【解决方案1】:

您不需要match() 来比较两个字符串。有常见的===比较运算符

if(smarty_address_check[i] === $(this).val()) {

编辑:如果数组的索引与输入的索引/位置匹配,则可以通过使用相同的索引来避免外循环

$('.smarty_address_check').each(function(index) { //For each of inputs
    if (smarty_address_check[index] === $(this).val()) { //if match against array
        exampleAddressPresent = true; //Example address present
        console.log($(this).attr("id")); //store id of unchanged input
    }
});

【讨论】:

  • 是的,看到了!并删除 var 因为这个 var 已经被全局定义了!
  • index.each() 方法的可选参数,用于保存jQuery 对象内当前元素的索引
【解决方案2】:

如果您要检查的 arrayan Array of strings,则可能的解决方案是:

将数组中的值转换为一个字符串:

var myArray = ['apples', 'mangoes', 'bananas'] // example Array of strings
var string = myArray.join(':'); // we'll get "apples:mangoes:bananas"

接下来,我们可以检查我们的值是否在那个字符串上

var myValue = 'apples' // example input value
if(string.indexOf(myValue) !== -1) 
  // do something (i.e. myValue matches with one of the values on myArray)

祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2019-07-18
    • 2020-01-03
    • 2019-04-08
    • 1970-01-01
    • 2013-06-08
    相关资源
    最近更新 更多