2014-03-25 29 views
-4

看看這個:如何比較多個數據並顯示錯誤

var a1 = 1; 
var a2 = 2; 
var a3 = 5; 
var a4 = 2; 
. 
. 
var a100 = 7; 

我不得不說,100個變量是這樣的。我想比較這些變量,並在兩個或兩個以上的變量具有相似的值時顯示錯誤。我不想這樣做的很長的路:

if((a1 == a2) || (a1 == a3) || ... || (a1 == a100)) 
{ 
    //do something 
} 
if((a2 == a1) || (a2 == a3) || ... || (a2 == a100)) 
{ 
    //do something 
} 

請建議一個更短的方法。

P.S:變量僅包含整數值。

+3

你能使用數組? –

+0

任何你建議:) – Niks

+0

你是否定義了所有這100個變量? :O –

回答

-1

這正是數組是。

var a = new Array(); 
a[0] = 1; 
a[1] = 2; 
a[2] = 5; 
a[3] = 2 

var found = false; 
for(i = 0;a.length > i;++i) 
{ 
    for(j = i+1; j < a.length;++i) 
    { 
    if(a[i] != a[j]) 
    { 
     found = true; 
     //do something 
    } 
    } 
} 
if(!found) 
{ 
    // no dupes, do something else. 
} 

沒有數組:

var a1 = 1; 
... 

var a100 = 30; 

var found = false; 
for(i = 1;100 >= i; ++i) 
{ 
    for(j = i+1;100 >= j;++j) 
    { 
    if(eval('a' + i + ' != a' + j)) //yuck, but it should work. 
    { 
     found = true; 
     // do something. 
    } 
    } 
} 
if(!found) 
{ 
    //no dupes. do something else. 
} 
+0

通過在O(log(n))時間對數組進行排序,然後在O(n)時間內將每個項目與其旁邊的項目進行比較,您可能會提高性能。我懷疑對於小組(100或200的數量級)差別很重要,但如果我們談論的是成千上萬的話,您可能需要考慮它。 –

-1

用正則表達式

if (/^(something|nothing|anything|everything)$/.exec('jesus')) alert('Who cares?');​ 

或者相反:

/^(something|nothing|anything|everything)$/.exec('jesus')||alert('Who cares?'); 

[更新]更短;-)

if (/^(some|no|any|every)thing$/.exec('jesus')) alert('Who cares?');​ 
+0

你可以給整數值,或任何你想要的東西 – Abhishek

+0

如何給它的整數值。顯示一個例子。 – Prakash