gpt4 book ai didi

javascript - 我怎样才能减少 if else 语句

转载 作者:行者123 更新时间:2023-12-01 02:20:39 24 4
gpt4 key购买 nike

我编写了一个函数,将“,”和“and”放在三个链接之间我怎样才能减少 if else 语句。在javascript中,如果计数不为零,则我得到计数​​,这意味着链接必须显示,否则应该隐藏

在以下场景中

function inst_grammer()
{
var otherCount = parseInt($('.global_other_count').html());
var initCount = parseInt($('.global_init_count').html());
var signCount = parseInt($('.global_sign_count').html());

var init_class = $('.inst_init');
var sign_class = $('.inst_sign');

if (signCount != 0 && initCount != 0 && otherCount == 0)
{
init_class.html('').fadeOut();
sign_class.html(' and ').fadeIn();
} else if (signCount == 0 && initCount != 0 && otherCount != 0)
{
init_class.html(' and ').fadeIn();
sign_class.html('');
} else if (signCount != 0 && initCount != 0 && otherCount != 0)
{
init_class.html(' and ').fadeIn();
sign_class.html(' , ').fadeIn();
}
else if (signCount != 0 && initCount == 0 && otherCount == 0)
{
init_class.html('').fadeOut();
sign_class.html('').fadeOut();
}
else if (signCount == 0 && initCount != 0 && otherCount == 0)
{
init_class.html('').fadeOut();
sign_class.html('').fadeOut();
}
else if (signCount == 0 && initCount == 0 && otherCount != 0)
{
init_class.html('').fadeOut();
sign_class.html('').fadeOut();
}
else if (signCount != 0 && initCount == 0 && otherCount != 0)
{
init_class.html('').fadeOut();
sign_class.html(' and ').fadeIn();
}
}

最佳答案

我认为大家看待这个问题的方式都是错误的。它不是关于简化 if 的问题,而是关于按语法顺序插入“,”和“and”分隔符的算法。

此问题的任何解决方案都应允许任意数量的项目(而不仅仅是指定的 3 个)。否则,如果规范发生变化,您可能会得到越来越多的 if 测试。当然更可重用(即,如果业务需求发生变化)。

我认为在这个例子中,目的是提供一个显示这些选项的显示器:

  • “a、b 和 c”
  • “a 和 b”
  • “a 和 c”
  • “b 和 c”
  • “一个”
  • “b”
  • “c”

所以规则是:

  • 如果显示项数为1,则不显示分隔符
  • 如果显示项数为2,则在项之间显示“and”
  • 如果项目数为 3,则除最后一项外,使用“,”代替“and”。

基本上,对于 n > 1,最后一个分隔符是“and”,所有其他分隔符都是“,”。这个简单的规则可以应用于任意数量的项目。

只需计算非零项的数量即可获得此效果。 正如我在评论中提到的,将数据放入数组中,以便您可以简单地迭代它。这意味着您的输出字段也应该位于数组中,这样您就只能按顺序显示您想要的字段。

如果您愿意提供 HTML 示例,我们很乐意提供代码,但您应该能够从这些简化的规则中自己找出答案。 :)

关于javascript - 我怎样才能减少 if else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21133753/

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