use*_*506 7 html javascript jquery
我有4个输入字段,让用户输入这4家公司在特定区域的重要性(排名),如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
输入字段不是必需的,应该是从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"]'));
Run Code Online (Sandbox Code Playgroud)
当只有一个值丢失时它工作正常,但是当有2个值缺失(1,2)时,它只返回它们的总和(3).我该如何改进?
您可以执行此操作来检查数组中是否缺少数字(来自 Dasari Srinivas 的原始代码):
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");
}Run Code Online (Sandbox Code Playgroud)
<p>first array => [4, 1, 2, 3];</p>
<p>second array => [5, 1, 2, 3];</p>Run Code Online (Sandbox Code Playgroud)