检查数组的所有值是否都相等

2022-08-30 00:08:16

我需要找到所有值都相等的数组。最快的方法是什么?我应该遍历它并仅比较值吗?

['a', 'a', 'a', 'a'] // true
['a', 'a', 'b', 'a'] // false

答案 1
const allEqual = arr => arr.every( v => v === arr[0] )
allEqual( [1,1,1,1] )  // true

或单行:

[1,1,1,1].every( (val, i, arr) => val === arr[0] )   // true

Array.prototype.every(来自MDN):该方法测试数组中的所有元素是否都通过了由提供的函数实现的测试。every()


答案 2

编辑:成为红色忍者:

!!array.reduce(function(a, b){ return (a === b) ? a : NaN; });

结果:

var array = ["a", "a", "a"] => result: "true"
var array = ["a", "b", "a"] => result: "false"
var array = ["false", ""] => result: "false"
var array = ["false", false] => result: "false"
var array = ["false", "false"] => result: "true"
var array = [NaN, NaN] => result: "false" 

警告:

var array = [] => result: TypeError thrown

这是因为我们不传递初始值。因此,您可能希望先检查一下。array.length