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

是使用javascript的给定值列表中的值吗?,javascript,boolean,set,Javascript,Boolean,Set,如何确定给定值是否在某些值中?类似于SQL中的运算符中的,或者您可能期望从集合中得到的内容。让我们假设集合是{male,female,xyz}。我想知道是否有男性在这个集合中。这个操作符确实存在于JavaScript中。但它检查对象上是否存在属性 您可以使用对象哈希或数组: var values = {male: true, female: true, xyz: true} var valueToSearch = 'female'; valueToSearch in values; //tru

如何确定给定值是否在某些值中?类似于SQL中的运算符中的,或者您可能期望从集合中得到的内容。让我们假设集合是
{male,female,xyz}
。我想知道是否有男性在这个集合中。

这个操作符确实存在于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
}

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


如果您的意思是在数组中可以使用

对象 排列 作用 注
我没有使用indexOf,因为op没有提到浏览器支持,而且indexOf不适用于所有版本的Internet Explorer(gross!)

var pattern=new RegExp(男性|女性| xyz);var search=“malee”;我想知道搜索是否符合真-假的模式…在我的示例中,答案应该是假请参考我尝试使用的RegExp的文档。。var模式=新的RegExp((男性|女性| xyz),“i”);变量搜索='男性';if(pattern.test(search)){//search found}
var find = 'male';
var haystack = ['female', 'male', 'xyz'];

alert((haystack.indexOf(find) >= 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