我需要测试数组中的每个项是否彼此相同.例如:
var list = ["l","r","b"]
应评估为false,因为每个项目不相同.另一方面这个:
var list = ["b", "b", "b"]
应该评估为真,因为它们都是相同的.实现这一目标的最有效(速度/资源)方式是什么?
我对Ruby代码有点'问题'.我想检查一个数组的所有元素是否相等.
例如,假设我有一个只有5的数组:
arr = [5, 5, 5, 5, 5]
Run Code Online (Sandbox Code Playgroud)
我知道我可以做点什么
arr[0] == arr[1] == arr[2] == arr[3] # == arr[4] == ...
Run Code Online (Sandbox Code Playgroud)
但是对于大型阵列来说这是不可能的,而且在我看来也不像Ruby那样.我们可以通过这样做来改进它:
def all_equal?(arr)
for i in 0..(arr.size-2)
if arr[i] != arr[i+1] then
return false
end
end
true
end
Run Code Online (Sandbox Code Playgroud)
但我也认为这很难看.那么有没有内置/更好/更短(更多Ruby风格)的方式来做到这一点?
TL; DR什么是检查数组是否只包含一个不同元素(例如 [5, 5, 5])的最短/最Ruby特有的方法?
谢谢.
我需要比较一个数组中的所有值,以了解它们是否全部相等.所以这很好,并给我预期的输出
var myArray1 = [50, 50, 50, 50, 50]; // all values are same, should return true
var myArray2 = [50, 50, 50, 50, 51]; // last value differs, should return false
function compare(array) {
var isSame = true;
for(var i=0; i < array.length; i++) {
isSame = array[0] === array[i] ? true : false;
}
return isSame;
}
console.log('compare 1:', compare(myArray1)); // true
console.log('compare 2:', compare(myArray2)); // falseRun Code Online (Sandbox Code Playgroud)
然后我尝试使用reduce(),但看起来我误解了这个功能.他们都说这是假的.我做错了什么吗?我可以用它reduce()来得到我需要的东西吗?如果是这样的话?
var myArray1 = [50, …Run Code Online (Sandbox Code Playgroud)