0

如何找出给定值是否在某些值中?类似于INSQL 中的运算符或您对集合的期望。假设 set 是{male,female,xyz}. 我想知道男性是否在集合中。

4

4 回答 4

1

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

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

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

编辑:使用正则表达式:

if(pattern.test(search)) {
   //search found
}
于 2013-08-23T12:25:33.783 回答
0

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

判断数组是否包含值

于 2013-08-23T12:27:31.713 回答
0

如果你的意思是在一个数组中,你可以使用indexOf

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

alert((haystack.indexOf(find) >= 0));
于 2013-08-23T12:27:45.777 回答
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 因为操作没有提到浏览器支持,并且 indexOf 不适用于所有版本的 Internet Explorer(恶心!)

于 2013-08-23T12:45:43.223 回答