我需要帮助弄清楚数组是否包含两个特定字符串以外的字符串。例如,如果一个字符串包含" 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.
有任何建议或更好的方法吗?
感谢。
答案 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")
}