【问题标题】:Grouping JavaScript if statements of the same 'smaller than'对相同“小于”的 JavaScript if 语句进行分组
【发布时间】:2014-03-13 08:16:19
【问题描述】:

所以我有这么长的if 声明。

if(dupeCheck[0].length > 1 || dupeCheck[1].length > 3 || dupeCheck[2].length > 1 || dupeCheck[3].length > 1){
    alert('Copy!');
}

可以将dupeCheck[0].length > 1 部分组合在一起吗?喜欢:

if((dupeCheck[0].length||dupeCheck[2].length||dupeCheck[3].length) > 1 || dupeCheck[1].length > 3){
    alert('Copy!');
}

或者:

if(dupeCheck[0].length||dupeCheck[2].length||dupeCheck[3].length > 1 || dupeCheck[1].length > 3){
    alert('Copy!');
}

我都试过了,都不管用。

【问题讨论】:

  • 我不确定。数组里面有.getElementsByClassName,所以我检查每个字符串里面是否有多个找到的元素并执行一个命令,但是其中一个数组值已经有3个相同的类。
  • @isherwood 感谢您的链接,但我不确定这些问题是否能准确回答 OP 的问题。
  • @Marian 听起来你有一个更大的问题要解决。如果您可以提供一些详细信息(可能在另一个问题中),您可能会发现我们可以提供更好的整体解决方案。

标签: javascript


【解决方案1】:

根据您需要运行多少测试,您也可以尝试这样的方法。

function isGreater(minimum){
  for(var i=1;i<arguments.length;i++){
    if(arguments[i] > minimum){
      return true;
    }
  }
  return false;
}

if(isGreater(1, dupeCheck[0].length, dupeCheck[2].length, dupeCheck[3].length) || isGreater(3, dupeCheck[1].length)){
  alert('Copy!');
}

这将使您可以根据数字测试任意数量的值,例如

if(isGreater(5, 0,0,0,0,2,1,2,3,4) || isGreater(7, 1,3,1,2,1,9,2,1)){
  alert('Copy!');
}

由于 JavaScript 允许您向函数传递任意数量的参数,因此 2ndNth 参数将针对第一个参数“最小值”进行测试,并且只要一个通过测试函数返回true。您可以调整逻辑以测试其他条件,甚至确保所有参数都通过条件而不仅仅是一个条件。

【讨论】:

    【解决方案2】:

    没有内置的语言结构可以做到这一点。

    但是你可以做的是这样的:

    if(Math.min(dupeCheck[0].length, dupeCheck[2].length, dupeCheck[3].length) > 1 || dupeCheck[1].length > 3) {
        alert('Copy!');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-08
      • 2020-11-05
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2018-10-24
      相关资源
      最近更新 更多