如何使用inArray()
搜索数组作为值,并返回true
,即使该值被其他字符包围。这是我的代码(med
是我的数组,它是med[1-10]
):
alprazolamlog = $.inArray('alprazolam', med) > -1;
xanaxlog = $.inArray('xanax', med) > -1;
if (alprazolamlog==true) {
$("#xanax").css("display", "block");
} else if (xanaxlog==true) {
$("#xanax").css("display", "block");
}
如果数组元素为" xanax"则返回true
或"阿普唑仑"。但是,如果用户输入" xanax xr"或者" alprazolam er"它将返回false
。有没有办法搜索字符串" xanax"或"阿普唑仑"在该特定数组元素的任何一点,即使该特定数组元素中还有其他字符,并在这种情况下返回true
?
答案 0 :(得分:1)
如果您正在寻找部分匹配,则无法使用$.inArray()
。它只是不起作用。相反,您可以自己迭代数组,并针对您想要的数组的每个元素进行任何匹配。
$.inArray()
没有魔力。它只是在数组中查找精确值的快捷方式,但如果该快捷方式不是您想要的,那么只需进行自己的迭代和自己的比较类型。
例如:
function findPartialStrInArray(array, target) {
for (var i = 0; i < array.length; i++) {
var item = array[i];
// if this array element is a string and contains the target string
if (typeof item === "string" && item.indexOf(target) !== -1) {
return i;
}
}
return -1;
}
var alprazolamlog = findPartialStrInArray(med, 'alprazolam') > -1;
var xanaxlog = findPartialStrInArray(med, 'xanax') > -1;
答案 1 :(得分:0)
试试这个
var search_pattern = /llo/;
var data = ['foo', 'bar', 'hello world', 'im in an array'];
$.each(data, function(i, item) {
if(item.match(search_pattern))
console.log(item)
});
你也可以在获得一个积极结果后打破foreach,或者使用return i;