2013-12-13 173 views
2

什么是写一个简短的形式:的Javascript比较值2个数组

if (array1[0] >= array2[0] && array1[1] >= array2[1] && ...) { 
do something; 
} 

我试图创建一个功能,但我不能使它工作,我仍然在这个很新。

+0

请参阅该链接,以发布
http://stackoverflow.com/questions/3432929/comparing-two-arrays-in-javascript-returning-differences –

+0

@DevendraLattu这个问题ISN类似的问题完全类似 – Joe

回答

3

最优雅的方式将是使用.every

的每()方法测试数组中的所有元素是否通过由提供的功能来实现的测试。

if (array1.every(function(e,i){ return e>=array2[i];})) { 
    do something; 
} 
+1

+1对于最优雅的解决方案。我删除了我基本相同的答案,但速度较慢:)。 – Tibos

+0

我试过这一个,但我得到一个语法错误“缺少;语句之前”。 – Trax

+0

是的,我错过了}在这里,一秒...修正。 @ user3099816 –

0
var isGreater = true; 
for (var i = 0; i < array1.length; i++) 
{ 
    if (array1[i] < array2[i]) 
    { 
     isGreater = false; 
     break; 
    } 
} 

if (isGreater) 
{ 
    //do something 
} 

你循环的第一阵列,并通过循环变量(i)更换号码

+1

这并不回答这个问题,即第一个* all *元素大于第二个,而不是* some *。 – Joe

+0

看着他的例子,他正在做arr1 [0] vs arr2 [0],arr1 [1] vs arr2 [1],这就是我的for循环正在做的事情,他从来没有问过如何检查所有东西 – Shryme

+0

我不同意。看看他的逻辑,这是'&&'所有条件。 – Joe

0

如果a所有元素都是比b所有元素大于这将返回true。它会尽早返回,而不必比较所有元素。

function compare(a, b) { 
    for (i = 0; i < a.length; i++) { 
     if (a[i] < b[i]) { return false;} 
    } 
    return true 
}