2016-03-29 6 views
7

जिन्हें आप नीचे देख मैं, एक विशिष्ट क्षेत्र में इन 4 कंपनियों में से उपयोगकर्ता इनपुट महत्व (रैंकिंग) जाने के लिए 4 इनपुट फ़ील्ड है:jQuery - लागू अद्वितीय निरंतर रैंकिंग

<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> 

इनपुट फ़ील्ड की आवश्यकता नहीं है और 1 से 4 तक पूर्णांक होना चाहिए (मान लीजिए कि कोई डुप्लिकेट नहीं है),

उपयोगकर्ता रैंकिंग को कूद नहीं सकता है जिसका अर्थ है कि रैंकिंग अद्वितीय और निरंतर होने की आवश्यकता है।

उदाहरण के लिए

, * हम इनपुट 1, 3 कर सकते हैं, 2 के साथ-साथ 4, 2, 1, 3

लेकिन जब इनपुट 3, 1 जैसा है, तो हमें 2 को याद रखने की आवश्यकता है।

जब हम 3 इनपुट करते हैं, तो हमें 1 और 2 दोनों को याद करने की आवश्यकता है।

यहाँ रैंकिंग की जाँच करने के लिए अपने कोड है:

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"]')); 

यह ठीक काम करता है जब सिर्फ एक मूल्य याद आ रही है, लेकिन जब वहाँ 2 मान अनुपलब्ध (1, 2) कर रहे हैं, यह सिर्फ योग वापसी (3) उनमें से। मैं इस पर कैसे सुधार करूं?

+0

एक त्वरित सवाल है, क्या मतलब है आपका यहां, लगभग 1,3,2 और 4,2,1,3 मान्य हैं, और 3,1 अमान्य है !!! – ameenulla0007

+0

@ ameenulla0007 यदि आप नोटिस करते हैं, तो '2' गुम है – user3368506

+0

यहां तक ​​कि 1,3,2 नंबर 4 गायब है! – ameenulla0007

उत्तर

1

आप ऐसा कर सकते हैं, अगर वहाँ एक सरणी (दसारी श्रीनिवास से मूल कोड) में एक लापता संख्या है की जाँच करने के:

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

यहां एक अलग तर्क का उपयोग कर रहा हूँ। संकलन किए बिना इसे त्रुटियों के लिए बस कोड किया। हालांकि, तर्क आपके परिदृश्य में काम करना चाहिए।

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"]')); 
संबंधित मुद्दे