是使用javascript的给定值列表中的值?

时间:2013-08-23 12:21:50

标签: javascript boolean set

如何确定给定值是否属于某些值?类似于SQL中的IN运算符或者您可能期望的集合。我们假设集合为{male,female,xyz}。我想找到男性是否在集合中。

4 个答案:

答案 0 :(得分:1)

in运算符确实存在于JavaScript中。但它会检查对象上是否存在属性。

您可以使用对象哈希或数组:

var values = {male: true, female: true, xyz: true}
var valueToSearch = 'female';

valueToSearch in values; //true

var values = ['male', 'female', 'xyz']

values.indexOf(valueToSearch) !== -1 // true

编辑: 使用RegExp:

if(pattern.test(search)) {
   //search found
}

答案 1 :(得分:0)

我认为你需要的是indexOf。查看此示例以了解如何使用它:

Determine whether an array contains a value

答案 2 :(得分:0)

如果您在数组中表示可以使用indexOf

var find = 'male';
var haystack = ['female', 'male', 'xyz'];

alert((haystack.indexOf(find) >= 0));

答案 3 :(得分:0)

对象

var objNames = {
    "Michigan": "MI",
    "New York": "NY",
    "Coffee": "yes, absolutely"
};

阵列

var arrNames = [
    "Michigan", "New York", "Coffee"
]

功能

function isIn(term, list) {
    var i, len;
    var listType = Object.prototype.toString.call(list);

    if (listType === '[object Array]') {
            for (i = 0, len = list.length; i < len; i++) {
                if (term === listType[i]) { return true; }
            }
            return false;
    }

    if (listType === '[object Object]') {
        return !!list[term]; // bang-bang is used to typecast into a boolean
    }

    // What did you sent to me?!
    return false;
}

用法

var michiganExists = isIn('Michigan', objNames); // true

注意

我没有使用indexOf,因为op没有提到浏览器支持,而indexOf不适用于所有版本的Internet Explorer(粗略!)