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

Search if multiple values exist in array

本文关键字:存在 是否 数组 搜索      更新时间:2023-09-26

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

如果iid_nn包含13652或39855,则var somevar="cabbages",否则var somevar="胡萝卜"。

如果检查其中一个值,我可以进行

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';
}

您可以将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) {

不能将一个值传递给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';
}

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

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

您的条件有点错误。

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

试试这个:

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