let me explain my question with examples:
// let arr = [1,2,3,4,5];
I would like to compare all of them:
1 === 2
1 === 3
1 === 4
1 === 5
2 === 3
2 === 4
2 === 5
3 === 4
3 === 5
4 === 5
我正在尝试使用if语句,如果这是真的'做到这一点,如果你们能够以最有效的方式解决这个问题,那真是太棒了。 谢谢你的进步
答案 0 :(得分:0)
在for
内使用for
:
for(var i = 1; i < arr.length; i++) {
for(var j = 1; j < arr.length; j++) {
if(arr[i] === arr[j]) {
console.log("ok");
}
}}
i [0]将与j [0],j [1],j [2],j [3],j [4]
进行比较和i [1]将与j [0],j [1],j [2],j [3],j [4]
进行比较答案 1 :(得分:0)
也许这会让你开心吗? :)
const testArray = (arr) => arr.sort().join() === arr.sort().reverse().join()
const typedTestArray = (arr) => testArray(arr) && testArray(arr.map(x => typeof x))
console.log('Must be true', testArray([1, 1, 1, 1]))
console.log('Must be false', testArray([1, 0, 0, 1]))
console.log('Must be false', testArray(['happy', 'sad']))
console.log('Must be false', typedTestArray([1, '1', 1, 1]))
&#13;
<强> UPD:强>
添加了typedTestArray()以检查类型相等性,例如从注释到我的答案:[2, 2, '2', 2]
<强> UPD2:强> 用箭头功能重写,使其看起来更短更干净。 所以我的目的只是找到一个不使用循环的解决方案。没有检查类型的这个可以在一行中使用并且似乎正在工作。
答案 2 :(得分:-1)
我们知道,要使所有元素彼此相等,它们必须都等于数组中的第一个元素。如果是arr[0] === arr[1]
和arr[0] === arr[2]
,那么肯定是arr[1] === arr[2]
。出于这个原因,我们只需要针对第一个元素检查每个元素。我们可以使用for循环。
for(var i = 1; i < arr.length; i++) {
if(arr[i] !== arr[0]) {
return false;
}
}
return true;