gpt4 book ai didi

javascript - jQuery - 实现独特的连续排名

转载 作者:太空狗 更新时间:2023-10-29 14:20:28 26 4
gpt4 key购买 nike

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

输入字段不是必需的,应该是从 1 到 4 的整数(假设没有重复项),

用户不能跳跃排名,这意味着排名需要是唯一的和连续的。

例如,*我们可以输入1,3,2以及4,2,1,3

但是当输入像 3,1 时,我们就需要提醒 2 丢失了。

当我们输入3时,我们需要提醒12都丢失了。

这是我检查排名的代码:

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 个值时(12),它只返回它们的总和(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");
}
<p>first array =>  [4, 1, 2, 3];</p>
<p>second array => [5, 1, 2, 3];</p>

关于javascript - jQuery - 实现独特的连续排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36278635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com