gpt4 book ai didi

javascript 数组和/或 jquery $.inArray() 和 .splice()

转载 作者:行者123 更新时间:2023-11-28 02:22:51 25 4
gpt4 key购买 nike

我正在使用一个只能包含 12 个值的数组; 1 到 12。这些值可以按任何顺序存在。我需要遍历数组并找到第一个未使用的值,然后将其设置为变量。

例如,如果数组包含值 [1, 7, 2, 5, 10],我想将变量设置为 3,因为它是按数字顺序排列的第一个未使用的数字。我正在使用 jQuery 1.9.1 和 jQuery UI 1.10.1,但如果这可以用纯 JavaScript 解决,那也很好!

下面是我的代码,我知道这是错误的,因为它总是将变量设置为 1。 注意:tCounter 是在多个函数中使用的全局数组,因此我不想修改此处的内容。这就是我创建 tArray 来拼接值的原因。感谢您的帮助!

var i;
var t;
var tArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];

for (i = 1; i < 12; i++) {
if (jQuery.inArray(i, tCounter)) {
tArray.splice($.inArray(i, tArray), 1);
}
}

if (tArray.length <= 0) {
term = 1;
} else {
term = tArray[0];
}

最佳答案

我在您当前的实现中发现了两个错误。

首先,你的for循环索引似乎是一次性的。在当前状态下,它不会检查数字 12 是否存在(由于您的条件 i<12 )。

第二,你的if语句实际上评估为 false,而它应该为 true。如果数组中的索引为 0(0 在 Javascript 中计算为 false),则应输入该语句。根据你所拥有的,我将重写你的代码如下:

  var i;
var t; //this isn't used, perhaps it should be 'term'?

for (i = 1; i < 13; i++) {
// if we find a number that isn't in tCounter, we exit the loop.
if (jQuery.inArray(i, tCounter) === -1) {
term = i;
break;
}

//sets term to null if all numbers are present in array.
term = null;
}

如果您的值不是数字 1-12 而是任意数字,那么您从数组中拼接值的想法会很好地工作,但实际上,您实际上根本不需要 var tArray。

旁注:在一个有趣的比较中,如果您正在寻找尽可能最快的实现,您应该使用 tCounter.indexOf(i)而不是jQuery.inArray(i, tCounter) ,我不确定哪个更快,但是 this漂亮的测试证实了我的怀疑。

关于javascript 数组和/或 jquery $.inArray() 和 .splice(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15396358/

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