我如何减少else语句[关闭] - javascript

Closed. This question is opinion-based。它当前不接受答案。

想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

6年前关闭。

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

在以下情况下

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();
}
}

javascript大神给出的解决方案

我认为每个人都在错误地看待这个问题。它与简化if无关,而与在语法顺序中插入“,”和“ and”分隔符的算法有关。

任何解决此问题的方法都应允许任何数量的项目(不仅限于指定的3个项目)。否则,如果规格发生更改,您可能会获得数量大大增加的if测试。当然更可重用(即,如果业务需求发生变化)。

在此示例中,我收集的意图是提供一个显示以下选项的显示:

“ a,b和c”
“ a和b”
“ a和c”
“ b和c”
“一个”
“ b”
“C”

因此规则是:

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

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

您可以通过简单地计算非零项目的数量来获得此效果。
正如我在评论中提到的那样,将您的数据放入一个数组中,以便您可以简单地对其进行迭代。这意味着您的输出字段也应该位于数组中,因此您只按顺序显示所需的字段。

如果愿意提供HTML示例,很高兴提供代码,但是您应该能够从这些简化的规则中自己弄清楚。 🙂

在Wordpress插件中加载自定义JavaScript - javascript

好的,这让我发疯了:我正在尝试构建一个简单的Wordpress插件,并且正在尝试确保js与php分开。我已经看过了法典和各种教程,但要么都是在做假设,要么是我只是个白痴,因为它不起作用...基本上,我最终希望通过ajax向自定义添加一些行添加帖子时使用表格,但首先我要让“ Hello World”在“添加帖子”页面上工作...当然,这很简单:这是myplug…

jQuery val函数在隐藏字段上不起作用? - javascript

这是我的HTML代码:<div style='display:none;' id='allformid'> <div> <form action='#'> <input type='text' name='name' …

对Flask-Admin字段覆盖使用ACE语法荧光笔 - javascript

在遵循以下有关覆盖flask-admin字段的提示之后,我试图使Ace语法荧光笔工作。https://flask-admin.readthedocs.io/en/latest/advanced/#wysiwig-text-fields这个想法是使SQLServer语法在wtforms文本区域上突出显示。此尝试不起作用,不确定额外的js中还包括什么?class…

读取客户端上的提要时出现NotAllowedException - javascript

嗨,我是GetStream的新手,仍然在学习。这是我正在使用的压缩版本。我有一个python后端,可在其中创建用户令牌:client = stream.connect(...) token = client.create_user_token(id) return token 然后,我将令牌传递给js前端,在该前端中该令牌用于检索该用户的feed活动。我正在…

在散景中显示裁剪的图像 - javascript

我正在以散景的形式在图中显示图片,并且正在使用BoxSelectTool绘制矩形。box_select = BoxSelectTool(callback=callback) p2 = figure(x_range=(0,700), y_range=(0,500),plot_width=1100,plot_height=1100,tools=[box_sele…