Javascript JS-检查数组是否只有指定值而没有任何值

Javascript JS-检查数组是否只有指定值而没有任何值,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我有一个可以包含许多值的数组。我需要的是一种方法来检查这个数组中的所有值是否与我想要的值匹配 以下是我迄今为止所做的工作: const arr = ['foo', 'foo', 'bar', 'foo', 'baz', 'foo', 'qux']; // I need to see if all values in arr is eqaul to 'foo' const mappedArr = arr.map(item => item === 'foo'); if (!mappedArr.

我有一个可以包含许多值的数组。我需要的是一种方法来检查这个数组中的所有值是否与我想要的值匹配

以下是我迄今为止所做的工作:

const arr = ['foo', 'foo', 'bar', 'foo', 'baz', 'foo', 'qux'];
// I need to see if all values in arr is eqaul to 'foo'
const mappedArr = arr.map(item => item === 'foo');
if (!mappedArr.includes(false)) {
  console.log('my condition is satisfied');
} else {
  console.log('Nope! something else is in there');
}
但这需要在所有元素上循环,将数组转换为真/假数组,并检查新数组是否包含值

对于大型列表,这似乎不是一个好方法。如果我在遇到第一个不匹配的元素时就能够打破这个循环,那就更好了


有更好的方法吗?

使用过滤器而不是地图

常量arr=['foo','foo','bar','foo','baz','foo','qux'];
arr.filtere=>e=='foo'.length==arr.length?console.logtrue:console.logfalse为什么有人会编写如此复杂的逻辑

常量arr1=['foo','foo','bar','foo','baz','foo','qux']; 常量arr2=['foo','foo','foo','foo']; const checker=arr,str=>arr.everys=>s==str; console.logcheckerr1,“foo”; console.logcheckerr2,“foo” 你在找Array.prototype.some

如果其中一个元素不等于'foo',它将返回true,
如果它们都等于“foo”,则为false。

这就是映射的作用。map函数返回返回值的数组。使用each-each方法测试数组中的所有元素是否通过所提供函数实现的测试。您返回的是布尔值项=='foo',因此您得到的是布尔值数组。

您应该使用

设arr=['foo','foo','bar','foo','baz','foo','qux']; console.logarr.everylm=>elm=='foo'//错误的 arr=arr.mapelm=>foo'//将每个元素更改为“foo”进行测试
console.logarr.everylm=>elm=='foo'//true@SalmanA只要找到与callback.cool方法设置的条件不匹配的元素,every就会返回false,但我认为这个方法也会在所有元素上循环。
arr.some(element => element !== 'foo') !== false