搜索数组中是否存在多个值

时间:2015-06-30 17:08:17

标签: javascript

我有一个数组'iid_nn',它将包含~50个值。

如果iid_nn包含13652或39855,则var somevar ='cabbages'else var somevar ='carrots'。

如果检查其中一个值我可以做

if(iid_nn.indexOf(13652) >=0) {
    var somevar = 'cabbages';
} else if(iid_nn.indexOf(39855) >=0) {
    {var somevar = 'cabbages';
} else {
    var somevar = 'carrots';}

但我可以做点什么吗

if(iid_nn.indexOf(13652||39855) >=0) {
    var somevar = 'cabbages';
} else {
    var somevar = 'carrots';
}

6 个答案:

答案 0 :(得分:2)

您可以将indexOf条件修改为:

if (iid_nn.indexOf(13652) > -1 || iid_nn.indexOf(39855) > -1) {

或者您可以尝试使用array.some

if (iid_nn.some(function(i) { return i === 13652 || i === 39855; }) === true) {

答案 1 :(得分:2)

您无法将一个值传递给indexOf,这会导致它搜索多个值。但是,您可以正常使用||运算符:

var somevar;

if (iid_nn.indexOf(13652) >= 0 || iid_nn.indexOf(39855) >= 0) {
    somevar = 'cabbages';
} else {
    somevar = 'carrots';
}

也许可以创建自己的功能:

function containsAny(array, items) {
    return array.some(function (item) {
        return items.indexOf(item) !== -1;
    });
}

var somevar;

if (containsAny(iid_nn, [13652, 39855])) {
    somevar = 'cabbages';
} else {
    somevar = 'carrots';
}

答案 2 :(得分:0)

要检查多个值的索引,您需要将代码更新为以下内容。此外,您可以将值默认为胡萝卜,然后在条件更新它。

var somevar = 'carrots';

if(iid_nn.indexOf(13652) >= -1 || iid_nn.indexOf(39855) >= -1) {
    somevar = 'cabbages';
} 

答案 3 :(得分:0)

你的情况有点不对。

if(iid_nn.indexOf(39855)!=-1 || iid_nn.indexOf(13652)!=-1) 
{
    var somevar = 'cabbages';
} else {
    var somevar = 'carrots';
}

答案 4 :(得分:0)

试试这个:

if((iid_nn.indexOf(13652) !=-1)||(iid_nn.indexOf(39855) !=-1)) {
    var somevar = 'cabbages';
} else {
    var somevar = 'carrots';
}

答案 5 :(得分:0)

var iid_nn = [13652],
    somevar;
if (~iid_nn.indexOf(13652) || ~iid_nn.indexOf(39855)) {
    somevar = 'cabbages';
} else {
    somevar = 'carrots';
}