如何在javascript中相互检查所有数组元素?

时间:2018-05-03 18:31:19

标签: javascript

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语句,如果这是真的'做到这一点,如果你们能够以最有效的方式解决这个问题,那真是太棒了。 谢谢你的进步

3 个答案:

答案 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)

也许这会让你开心吗? :)

&#13;
&#13;
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;
&#13;
&#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;