我想查找一个元素(可能是字符串或数字)是否位于数组内。数组是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"]));
它确实有效 http://jsfiddle.net/franciscop/b97x4vex/。然而它看起来非常复杂,因为indexOf()
使用严格平等 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Description这不适合我的需要。 Ahacky方法将执行以下操作,这也有效:
return test.join("|").split("|").indexOf(value) > -1;
然而很容易看出,如果测试是["a", "b|c", "d"]
那么我们就有问题了,因为我们要比较a
, b
, c
& d
代替a
, b|c
, d
。寻找一个安全性格也不是一个选项,因此该解决方案无效。有没有更简单的方法来做indexOf()
with 正常平等?
编辑:我的第一次尝试是这样做,它从严格相等中意外地返回错误,这就是我以复杂的方式做到这一点的原因:
["1", "2", "3"].indexOf(2);