如果string被其他字符包围,如何使用inArray()在数组元素中查找字符串

时间:2014-08-01 05:53:52

标签: jquery arrays

如何使用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

2 个答案:

答案 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;

返回数组中的位置