<分区>
我想查找一个元素(可能是字符串或数字)是否在数组中。数组是test
元素是value
.到目前为止一切顺利,我有这段代码:
function compare(value, test) {
// We need to stringify all the values to compare them with a string
return test.map(function(value){
return value.toString();
}).indexOf(value) > -1;
}
alert(compare("2", [1, 2, 3]));
alert(compare("2", ["1", "2", "3"]));
It does work 强>。然而,由于indexOf()
,它看起来非常复杂。 uses strict equality这不符合我的需要。 hacky 方法是执行以下操作,这也有效:
return test.join("|").split("|").indexOf(value) > -1;
但是很容易看出,如果 test 是 ["a", "b|c", "d"]
那么我们有一个问题,因为我们要比较 a
, b
, c
& d
而不是 a
, b|c
, d
.寻找安全字符 也不是一种选择,因此该解决方案无效。 有没有更简单的方法来做 indexOf()
与正常平等?
编辑:我的第一次尝试是这样做的,它从严格相等中意外返回 false,这就是为什么我用复杂的方式来做:
["1", "2", "3"].indexOf(2);