社区首页 >问答首页 >使用多个参数创建检查以生成三个不同的结果

使用多个参数创建检查以生成三个不同的结果
EN

Stack Overflow用户
提问于 2016-08-25 03:07:26
回答 2查看 29关注 0票数 2

我需要找到最简洁的方法,根据两个参数返回三个值中的一个。我认为转换声明是最简洁的,但请提出替代方案。

我有两个论点,typeaction

如果是action == 'close',那么返回的结果应该始终是'Hide'

如果是action == open,那么需要更多的检查

如果action == 'open' && type == 'flight'返回show more flights

如果action == 'open' && type == 'protection'返回show protections

在不涉及多个嵌套if语句的情况下,最简洁的方法是什么?整个语句已经在由三元调用的另一个if语句中,所以我不想添加更多。

这是我目前的解决方案,有什么办法可以让这个更轻吗?

代码语言:javascript
代码运行次数:0
复制
createShowLabels: function(testEnabled,action,type){
                if (testEnabled){
                    if(action === 'open'){
                        switch(type) {
                            case 'flight':
                                return 'Show flight times';
                            case 'protection':
                                return 'What\'s this?';
                        }
                    } else {
                        return 'Hide';
                    }
                } else {
                    // Defaults
                    if (action === 'open'){
                        return 'Show more';
                    } else {
                        return 'Show less';
                    }
                }
            },
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-25 03:13:21

首先,让我们明确一点:“简洁”不是"good“、”可读性“或”可维护性“的同义词。有时,简洁的代码是好的、可读的和可维护的;有时,它不是。

考虑到您在注释中保证只有值才是列出的值,有几种方法。

在我自己的代码中,我可能会使用类似于FDavidov's answer的睡眠,但格式不同:

代码语言:javascript
代码运行次数:0
复制
if (action == 'close') {
    result = 'Hide';
} else if (type == 'flight') {
    result = 'show more flights';
} else {
    result = 'show protections';
}

但你要求最简洁的方式。条件运算符很简洁,但不一定非常容易调试:

代码语言:javascript
代码运行次数:0
复制
result = action == 'close' ? 'Hide' : type == 'flight' ? 'show more flights' : 'show protections';

示例:

代码语言:javascript
代码运行次数:0
复制
function test(action, type) {
  return action == 'close' ? 'Hide' : type == 'flight' ? 'show more flights' : 'show protections';
}
console.log(test('close', 'flight'));
console.log(test('close', 'protections'));
console.log(test('open', 'flight'));
console.log(test('open', 'protections'));

这些都不那么简洁,但更易于配置。

可以使用查找对象:

代码语言:javascript
代码运行次数:0
复制
var lookup = {
    'close|flight': 'Hide',
    'close|protections': 'Hide',
    'open|flight': 'show more flights',
    'open|protections': 'show protections'
};

result = lookup[action + '|' + type];

示例:

代码语言:javascript
代码运行次数:0
复制
var lookup = {
    'close|flight': 'Hide',
    'close|protections': 'Hide',
    'open|flight': 'show more flights',
    'open|protections': 'show protections'
};

function test(action, type) {
    return lookup[action + '|' + type];
}
console.log(test('close', 'flight'));
console.log(test('close', 'protections'));
console.log(test('open', 'flight'));
console.log(test('open', 'protections'));

或者就像你说的,一个开关:

代码语言:javascript
代码运行次数:0
复制
switch (action + '|' + type) {
    case 'close|flight':      result = 'Hide'; break;
    case 'close|protections': result = 'Hide'; break;
    case 'open|flight':       result = 'show more flights'; break;
    case 'open|protections':   result = 'show protections'; break;
};

示例:

代码语言:javascript
代码运行次数:0
复制
function test(action, type) {
    var result;
    switch (action + '|' + type) {
        case 'close|flight':      result = 'Hide'; break;
        case 'close|protections': result = 'Hide'; break;
        case 'open|flight':       result = 'show more flights'; break;
        case 'open|protections':   result = 'show protections'; break;
    };
    return result;
}
console.log(test('close', 'flight'));
console.log(test('close', 'protections'));
console.log(test('open', 'flight'));
console.log(test('open', 'protections'));

票数 3
EN

Stack Overflow用户

发布于 2016-08-25 03:16:02

如果您正在寻找短手短语,这不是您要寻找的。这是一种非常简单和可读的方式,可以编写您想要的东西:

代码语言:javascript
代码运行次数:0
复制
if (action == 'close') {
   return 'Hide';
}
else if (action = 'open') {
    if      (type = 'flight'    ) {return 'show more flights'}
    else if (type = 'protection') {return 'show protections' }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39143635

复制
相关文章
Mac端设置多个SSH Key以匹配不同的账号
在家里远程工作,手头只有一台Mac电脑。之前生成过一个SSH Key用以到东京大学的超算电脑端。这次需要通过SSH连接Github下载一些项目文件。不想使用同样的信息,所以想在原有Key的基础上生成一个新的Key。
铁男羊
2021/12/19
1.7K0
mybatis 使用tips - 使用多个参数
执行如下命令: mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate 可以使用mybatis generator mybatis 使用多个参数 自定义方法需要根据多个查询条件去查询: SELECT * FROM `db_demo`.`hot_topic` WHERE lang='english' AND category='017' AND topic_type='video' ORDER BY score DESC; 推荐使用
千往
2018/01/24
1.7K0
一文解决多个不同平台差异分析结果合并
原因:随着技术平台的不断发展,许多已发布的实验数据集可以被不同统计方法整合,使得可以同时使用各种方法来解决同一研究问题。但是为了从所有这些选择中获得最大的收益,我们需要以公正的方式整合它们的结果,例如不同实验的差异分析结果。优先排序的基因列表是基因组数据分析应用程序中常见的结果表示方法。因此,秩聚合方法可以成为这一类问题的有用且通用的解决方案。
用户1359560
2019/10/08
4.3K0
一文解决多个不同平台差异分析结果合并
使用Dapper读取Oracle多个结果集
Dapper对SQL Server支持很好,但对于Oracle有些用法不一样,需要自己进行特殊处理。
跟着阿笨一起玩NET
2022/05/10
1.2K0
Swift 使用lexicographicallyprecedes 多个参数排序
版权声明:转载请标明出处 https://blog.csdn.net/ZY_FlyWay/article/details/89184264
星宇大前端
2019/04/18
1.2K0
Swift  使用lexicographicallyprecedes 多个参数排序
今日头条三个参数,as,cp,_signature的生成过程
现如今自媒体风声水起,很多人现在都在从事着自媒体行业,游戏宣传,影视宣传,等等,都在以文章形式传播。
懒py夏洛
2022/06/01
1.2K0
今日头条三个参数,as,cp,_signature的生成过程
.NET ValueTuple使用WhenAll获取多个任务结果
在.NET中,我们可以通过Task.WhenAll用来等待多个任务。任务完成之后,我们可以使用await等待他们来获取结果。
HueiFeng
2020/05/27
8590
Swift桥接下创建多个target,打包不同版本的target坑
xxx-Swift.h错误问题 打不同版本的target包 坑 项目中使用了Swift版本的图表库Charts,导致在不同的target下需要使用不同的-Swift.h桥接 #import "IComeTest-Swift.h" #import "ICome-Swift.h" #import "IComeDebug-Swift.h" #import "ICome-Swift.h" 处理方案:配置Build Settings --> Preprocessor Macros, 在不同的target下导入不同的头
程序员不务正业
2018/06/14
2.2K3
cookie创建的三个参数(有效期+有效路径+httponly)
1.创建cookie对象+ URLEncoder.encode转码 1.1有效期:setMaxAge(); 可通过web.xml设置或者在servlet中设置 <!-- 使用配置文件修改session的有效期--> <session-config> <!-- 单位是分钟--> <session-timeout>10</session-timeout> </session-config> 1.2有效路径:setPath("/"); 1.当服务器运行时默认路径
2020/10/23
2.5K0
cookie创建的三个参数(有效期+有效路径+httponly)
以检查促规范,以规范促安全
相信在甲方公司(大中型)的信息安全从业人员都会有同样的困境-公司的信息系统资产(已知资产/未知资产)不可管理,信息系统资产漏洞百出,安全设备告警无暇研判。要突破这种困境就需要在信息系统上线之前以自查的形式来形成一种上线流程规范,以规范化的流程促进安全管理。
1neptune
2022/09/24
1K0
多个构造器参数使用构建器
标题一眼看过去可能不是很明白要讲什么,先来看看下面一段代码。 1 package example; 2 3 /** 4 * 重叠构造器 5 * @author yulinfeng 6 * Feb 13, 2017 7 */ 8 public class Student1 { 9 private String name; 10 private int age; 11 private String sex; 12 13 public Stud
用户1148394
2018/01/09
9140
Android Studio中的Gradle配置不同服务器地址以生成不同安装包”
1.在项目开始时,开发人员写代码,签入代码到dev分支。开发人员使用 开发服务器的服务器地址 2.在启动测试时,开发组负责人合并代码到 test 测试分支。测试组负责人要修改代码中 服务器地址的源文件,更改为 测试服务器的地址,打包分发到测试组成员开始测试。 3.测试完毕后,测试组负责人合并代码到 master 分支,修改服务器地址为 上线服务器地址,并测试,再到正式发布。   在上面的这些步骤中我们看到,需要多次修改服务器地址,对相关的技术能力有一定要求,认为操作还容易操作,比如写了一个不存在的服务地址。
张云飞Vir
2020/03/16
1.9K0
C#: 不同的方式检查Null
检查参数值是否为空的经典方法是什么?如果您已经使用C语言开发了一段时间,您可能会熟悉以下经典语法:
沙漠尽头的狼
2021/12/01
5080
C#: 不同的方式检查Null
检查参数值是否为空的经典方法是什么?如果您已经使用C语言开发了一段时间,您可能会熟悉以下经典语法:
JusterZhu
2022/12/07
4400
【IDEA】同一个应用运行多个测试实例(以不同端口)
一、在idea中写好应用后,正常情况下,选择测试,将启动唯一的服务实例(8080端口默认)
陶然同学
2023/04/02
1.4K0
【IDEA】同一个应用运行多个测试实例(以不同端口)
使用EasyPOI实现列数动态生成,多个sheet生成
程序员朱永胜
2023/08/17
1.2K0
使用EasyPOI实现列数动态生成,多个sheet生成
利用数据泵的 SQLFILE 参数生成创建索引的 DDL 语句
Oracle 的数据泵功能从 10g 开始慢慢引入,从此导入导出变得更加快捷,方便。使用时只需要 help 就可以获得很多有用的参数。只要你可以登录到数据库服务器,导入导出变得更加的方便高效,可以使用命令行、参数文件或交互命令模式与 Oracle Data Pump 交互。
JiekeXu之路
2022/12/07
8960
利用数据泵的 SQLFILE 参数生成创建索引的 DDL 语句
C# 直接创建多个类和使用反射创建类的性能
虽然一开始就知道了反射的性能比较差,但是究竟有多差,在创建对象的时候的差异有多少?
林德熙
2019/03/13
2.4K0
C# 直接创建多个类和使用反射创建类的性能
关于python使用threadpool中的函数单个参数和多个参数用法举例
1.对单个元素的函数使用线程池: # encoding:utf-8 __author__='xijun.gong' import threadpool def func(name): print 'hi {}\n'.format(name) if __name__ == '__main__': data = ['xijun.gong', 'xijun', 'gxjun'] pool = threadpool.ThreadPool(5) reqs = threadpool
Gxjun
2018/03/27
4.7K0
springboot根据不同的条件创建bean,动态创建bean,@Conditional注解使用
这个需求应该也比较常见,在不同的条件下创建不同的bean,具体场景很多,能看到这篇的肯定懂我的意思。
天涯泪小武
2019/01/17
8.1K0

相似问题

IOS 10宽颜色:我需要关心吗?

15

iPhone:什么是Springboard?我需要关心吗?

30

C++:如果我不使用移动,我还需要关心复制控制吗?

11

Endianness总是需要考虑的问题吗?

13

在生成HTML时,我需要关心缩进吗?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文