检查数组以查看它是否包含两个指定值之一

时间:2014-07-14 19:01:56

标签: javascript arrays search

我需要帮助弄清楚数组是否包含两个特定字符串以外的字符串。例如,如果一个字符串包含" a"以外的任何字符串,则它应该失败。区分大小写并不重要。

var array = ["a", "a", "a", "b"]; // this should fail
var array2 = ["a", "a", "a", "a"]; // this should pass

我在考虑这样的事情:

var abFound = false;
// Run a for loop and look for the contents of the array element (indexOf) to see if it equals "a" or "b", if it does set abFound to true.

有任何建议或更好的方法吗?

感谢。

3 个答案:

答案 0 :(得分:2)

函数Array.prototype.some可用于迭代数组,针对提供的谓词测试该数组的每个元素,并在谓词返回{{1}时返回true } 的。

true

如果谓词为数组中的每个元素返回var not_A = array.some(function(s) { return s !== 'a'; }); ,那么false的最终返回值也是.some

您也可以使用具有相反行为的false - 一旦任何谓词测试失败,它就会返回Array.prototype.every,如果谓词返回false,则只返回true对于数组的每个元素:

true

使用var all_A = array.every(function(s) { return s === 'a'; }); 是低效的,因为需要测试数组中的每个元素,一旦发现反指示结果,就没有机会提前终止。

答案 1 :(得分:0)

基于元素不等于你要检查的内容进行过滤,并检查它的长度是否为0.

var not_a = array.filter(function(value) { return value != 'a' }).length != 0;

答案 2 :(得分:0)

你可以试试这个

var filtered = array.filter(function(value){
return value === 'a';
 });
if(filtered.length === array.length){
console.log("pass")
} else{
console.log("fail")
}