原问题:www.zhihu.com/question/52…,原来是指定 JavaScript 的。
假设数组定义为
。
用 Array.prototype.indexOf()可以搜寻
是否存在于数组,即判断
。如果
存在,返回该索引( i >= 0),如果不存在,该函数在返回 -1。
然后我们需要检查所有元素是否相等,那么等价于检查所有元素是否等于第一个元素,取反一下:

由于问题需求刚好是布尔数组,所以
,那么就可变换为:

用 Array.prototype.indexOf() 的好处是原生提供的,而且是很直接的做最多
次相等测试,所以应该比以脚本自行实现快。但这个解答仅限于布尔数组才能使用。
原答案:
return arr.indexOf(!arr[0])<0;
(题图 Photo by Jessica Ruscello)
在这里尝试用逻辑说明原理。
假设数组定义为
。用 Array.prototype.indexOf()可以搜寻
是否存在于数组,即判断
。如果
存在,返回该索引( i >= 0),如果不存在,该函数在返回 -1。然后我们需要检查所有元素是否相等,那么等价于检查所有元素是否等于第一个元素,取反一下:

由于问题需求刚好是布尔数组,所以
,那么就可变换为:
用 Array.prototype.indexOf() 的好处是原生提供的,而且是很直接的做最多
次相等测试,所以应该比以脚本自行实现快。但这个解答仅限于布尔数组才能使用。