值中的任何匹配数组

时间:2016-05-02 11:26:19

标签: javascript jquery arrays

我想在输入值中找到任何匹配数组:

var vals = new Array('stackoverflow', 'google', 'yahoo');
var val = $('#txtAddress').val();

if ($.inArray(val, vals) != -1) {
  alert('yep');
} else {
  alert('nope');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="txtAddress" type="text" value="google is better" maxlength="100" id="txtAddress">

但是它不起作用,我希望在array中找到任何匹配value,例如valuegoogle is better而数组是google但它赢了在此值中找不到google,仅当值为google且数组为google时才有效:

var vals = new Array('stackoverflow', 'google', 'yahoo');
var val = $('#txtAddress').val();

if ($.inArray(val, vals) != -1) {
  alert('yep');
} else {
  alert('nope');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="txtAddress" type="text" value="google" maxlength="100" id="txtAddress">

那么,在这个值中找到任何匹配数组的任何解决方案?

更新:我也尝试过这种方式,但也没有尝试:

var vals = new Array('stackoverflow','google','yahoo');
var val = $('#txtAddress').val();
 
for (var i = 0; i < vals.length; i++) {
    if (vals[i] === val) {
        alert('Value exist');
    } else {
        alert('Value does not exist');
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="txtAddress" type="text" value="google is better" maxlength="100" id="txtAddress">

我可以提醒相符的条款吗?

2 个答案:

答案 0 :(得分:2)

您需要检查输入字符串(substring)上是否存在数组值。为此,您可以使用indexOf()

如果该值不存在,则返回-1

var vals = new Array('stackoverflow', 'google', 'yahoo');
var val = $('#txtAddress').val();
$.each(vals, function(i, a) {
  if (val.indexOf(a) > -1) {
    alert("found in " + a);
  }

});

Fiddle

答案 1 :(得分:0)

https://api.jquery.com/jQuery.inArray/

$。inArray(val,vals)不进行子串匹配。 它只是比较你在for循环中的方式。

我猜你需要子串匹配才能在'谷歌更好'中找到'谷歌'

因为我猜你可以: How to check whether a string contains a substring in JavaScript?

if val[i].indexOf(vals[i]) > -1 then match else not