2016-03-29 9 views
7

Uygulanışı:jQuery aşağıda gösterildiği gibi ben belirli Alanında bu 4 şirketin kullanıcı girişi önemi (sıralaması) izin 4 giriş alanları benzersiz sürekli sıralamasını

<table> 
<tr><th></th><th>Area 1</th></tr> 
<tr><td>Company A</td><td><input type="text" name="text1" id="text1"></td></tr> 
<tr><td>Company B</td><td><input type="text" name="text2" id="text2"></td></tr> 
<tr><td>Company C</td><td><input type="text" name="text3" id="text3"></td></tr> 
<tr><td>Company D</td><td><input type="text" name="text4" id="text4"></td></tr> 
</table> 

giriş alanları zorunlu değildir ve 1'den 4'e kadar tamsayı olmalıdır (varsayalım çoğaltmaları vardır),

kullanıcı sıralama sırasına atlayamaz; bu, sıralamanın benzersiz ve sürekli olması gerektiği anlamına gelir.

Örneğin

, * Biz girdi 1, 3 can, 2 yanı sıra 4, 2, 1, 3.

Ancak, girdi 3, 1 gibi olduğunda, 2 eksik uyarısı gerekiyor.

3 girdiğimizde, her ikisi de 1 ve 2 eksiklerini uyarmalıyız. İşte

sıralamasını kontrol etmek benim kodudur: Sadece bir değeri eksik zaman iyi çalışır

function checkMissingRank(object){ 
    object.change(function() { 
    var max = 0; 
    var actSum = 0; 
    var rows = object.length; 

    for(var i=1 ; i<=rows ; i++){ 
     if($('#text'+i+'').val() != ""){ 
      var actVal = parseInt($('#text'+i+'').val()); 

      //The actual sum of the values 
      actSum = actSum + actVal; 
      if(actVal>max){ 
       //Use the max to calculate the total sum should be 
       max=actVal; 
      } 
     } 
    } 

    //The total sum should be 
    totalSum = ((1+max)*max)/2; 

    //The difference is the missing value 
    var missVal = totalSum - actSum; 

    if(missVal != 0){ 
     alert("Ranking "+missVal+" is missing."); 
    } 
    }); 
} 
checkMissingRank($('input[name^="text"]')); 

ama eksik 2 değeri (1, 2) varken, sadece (3 toplamını döndürür) Bunu nasıl geliştirebilirim?

+0

kısa bir soru, ne demek Burada yaklaşık 1,3,2 ve 4,2,1,3 geçerlidir ve 3,1 geçersizdir! – ameenulla0007

+0

@ ameenulla0007 fark ederseniz, '' 2'de – user3368506

+0

eksik bile 1,3,2 sayı 4 eksik! – ameenulla0007

cevap

1
Bir dizi (Dasari Srinivas orijinal code) 'eksik bir değer olup olmadığını kontrol etmek için bunu yapabilirsiniz

:

function foo(num) { 
 
    if (num.length == 0) { 
 
     return 0; 
 
    } 
 
    var set = []; 
 
    var res = []; 
 
    var max = 1; 
 

 
    for (var i = 0; i < num.length; i++) 
 
     set.push(num[i]); 
 

 
    for (var i = 0; i < num.length; i++) { 
 
     var left = num[i] - 1; 
 
     var right = num[i] + 1; 
 
     var count = 1; 
 

 
     while (set.indexOf(left) != -1) { 
 
      count++; 
 
      set.splice(set.indexOf(left), 1); 
 
      left--; 
 
      res["min"] = left; 
 
     } 
 
     while (set.indexOf(right) != -1) { 
 
      count++; 
 
      set.splice(set.indexOf(right), 1); 
 
      res["max"] = right; 
 
      right++; 
 
     } 
 
     max = Math.max(count, max); 
 
    } 
 
    console.log(res); 
 
    return max; 
 
} 
 

 
var array2 = [4, 1, 2, 3]; 
 
if (foo(array2) == array2.length) { 
 
    alert("no missing"); 
 
} else { 
 
    alert("missing"); 
 
} 
 

 
array2 = [5, 1, 2, 3]; 
 
if (foo(array2) == array2.length) { 
 
    alert("no missing"); 
 
} else { 
 
    alert("missing"); 
 
}
<p>first array => [4, 1, 2, 3];</p> 
 
<p>second array => [5, 1, 2, 3];</p>

1

Burada farklı bir mantık kullanıyorum. Sadece derleme ve hatalar için kontrol etmeden kodladı. Ancak, mantık senaryonuzda çalışmalıdır.

function checkMissingRank(object){ 
    object.change(function() { 
    var max = 0; 
    var actSum = 0; 
    var rows = object.length; 
    var missingVal = ["1", "2", "3", "4"]; 

    for(var i=1 ; i<=rows ; i++){ 
     if($('#text'+i+'').val() != ""){ 
      var actVal = $('#text'+i+'').val(); 

      if(missingVal.indexOf(actVal) !== -1){ 
       var index = missingVal.indexOf(actVal); 
       missingVal.splice(index, 1); 
      } 


     } 
    } 

    if(missingVal.length > 1){ 
     var alertMsg = "Ranking "; 
     for(var i = 0; i < missingVal.length; i++){ 
      alertMsg += missingVal[i]; 
      if(i < (missingVal.length -1)){ 
        alertMsg += ","; 
      } 

     } 
     alertMsg += " is missing."; 

     alert(alertMsg); 
    } 
    }); 
} 
checkMissingRank($('input[name^="text"]')); 
İlgili konular