如何在if条件下执行两个变量?在这里,我有其他几个ifs,我想要100个ifs!有更短的方式吗?
$(document).on('click', '.btn-next', function () {
var z = [];
var recipientsArray = z.sort();
var zDuplicate = [];
$('option:selected.exclude_global').each(function() {
z.push($(this).val())});
for (var i = 0; i < recipientsArray.length - 1; i++) {
if (recipientsArray[i + 1] == recipientsArray[i]) {
zDuplicate.push(recipientsArray[i]);
}else if(recipientsArray[i + 2] == recipientsArray[i]){
zDuplicate.push(recipientsArray[i]);
}else if(recipientsArray[i + 3] == recipientsArray[i]){
zDuplicate.push(recipientsArray[i]);
}else if(recipientsArray[i + 4] == recipientsArray[i]){
zDuplicate.push(recipientsArray[i]);
}
}
if(zDuplicate.length>>0){
alert("Global Filter Already Exists");
event.preventDefault();
}
});
在这里,我有其他几个ifs,我想要100个ifs!有更短的方式吗?我有一个动态表的动态表。当我的表有5行代码正在工作时,但是当我有更多的代码工作时。
答案 0 :(得分:2)
您正在寻找的是一个嵌套循环。你基本上可以在循环中编写一个循环。 (实际上你想要多少。虽然它可以快速变丑。)
考虑你的循环结构:
for (var i = 0; i < recipientsArray.length - 1; i++) {
// check if recipientsArray[i] equals any other element
}
嗯,那只是另一个循环:
for (var i = 0; i < recipientsArray.length - 1; i++) {
for (var j = i + 1; j < recipientsArray.length - 1; j++) {
if (recipientsArray[j] == recipientsArray[i]) {
zDuplicate.push(recipientsArray[i]);
break;
}
}
}
请注意,可能是检查重复项的更有效方法。 (特别是,如果集合已经排序。)至少我已经改变了逻辑,所以你不会重新比较你已经做过的比较。 (我通过在i + 1
而不是1
开始内循环来实现这一点。正如你的逻辑所做的那样。)
我认为我使用else if
语句复制了您的break
结果。由于你的else if
逻辑基本上意味着“一旦你找到一个,就停止寻找”。这就是break
应该做什么,或者至少打算做什么,但你要测试它。如果没有(嵌套有时会让人困惑,这就是为什么要小心),那么你可能make use of labels可以达到同样的效果。
最终,无论你实现它,概念都是一样的。您正在询问如何迭代数组中的多个值。这就是循环的用途。
答案 1 :(得分:2)
我不懂那种语言。但数据和控制结构是任何语言的数据和控制结构。
通过以下方式替换你的for循环:
for (var i = 0; i < recipientsArray.length - 1; i++) {
for ( var j = i+1; j < recipientsArray.lenght-1; j++) {
if (recipientsArray[i] == recipientsArray[j]) {
zDuplicate.push(recipientsArray[i]);
break;
}
}
}
答案 2 :(得分:1)
非常感谢你的想法!
对代码进行一些小改动就像天堂一样!
for (var i = 0; i < recipientsArray.length - 1; i++) {
for (var j = 1; j < 100; j++) {
if (recipientsArray[i+j] == recipientsArray[i]) {
zDuplicate.push(recipientsArray[i]);
break;
}
}
}