2013-12-13 134 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 
}