为了账号安全,请及时绑定邮箱和手机立即绑定

如何简化基于多种条件的函数打印

如何简化基于多种条件的函数打印

一只甜甜圈 2023-08-24 10:43:01
我有一个函数,它根据 3 个输入变量格式化字符串。我已经使用 if / else if 语句完成了它,但我相信应该有一种更简单的方法来做到这一点。我有 3 个变量,它们都可以是字符串或 null。我正在使用 javascript / 角度。我可以想象有一个类似的情况,有 5 个变量,这会增加显着的 if 数量,如何简化它?formatDistance(){let distance;let swim;let bike;let run;swim = this.sport.swim ? this.sport.swim : null;bike = this.sport.bike ? this.sport.bike : null;run = this.sport.run ? this.sport.run : null;if(swim && bike && run) {  distance = swim + ' / ' + bike + ' / ' + run; }else if(swim && bike && !run) {  distance = swim + ' / ' + bike; }else if(swim && !bike && run) {  distance = swim + ' / ' + run; }else if(!swim && bike && run) {  distance = bike + ' / ' + run; }else if(!swim && !bike && run) {  distance = run; }else if(!swim && bike && !run) {  distance = bike; }else if(swim && !bike && !run) {  distance = swim; }else {  distance = '';} return distance;}
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您可以将过滤器与连接一起使用。序列由数组中的序列定义。将any 替换为null,可以看到它会与/ 连接在一起。


下面的片段中的示例。


[swim, bike, run].filter(item => item !== null).join('/')

swim = null

bike = null

run = 'c'



console.log('Should return c =>', [swim, bike, run].filter(item => item !== null).join('/'))


swim = 'a'

bike = null

run = 'c'


console.log('Should return a/c =>', [swim, bike, run].filter(item => item !== null).join('/'))



swim = null

bike = 'b'

run = 'c'


console.log('Should return b/c =>', [swim, bike, run].filter(item => item !== null).join('/'))


swim = 'a'

bike = 'b'

run = 'c'


console.log('Should return a/b/c =>', [swim, bike, run].filter(item => item !== null).join('/'))


查看完整回答
反对 回复 2023-08-24
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

尝试使用这个


formatDistance(){

    let distance = "";

    let swim;

    let bike;

    let run;

    swim = this.sport.swim ? this.sport.swim : null;

    bike = this.sport.bike ? this.sport.bike : null;

    run = this.sport.run ? this.sport.run : null;

    

    if(swim != null)

      distance = distance + swim + ' / ';

    if(bike != null)

      distance = distance + bike + ' / ';

    if(run != null)

      distance = distance + run + ' / ';

    distance = distance.substring(0, distance.length - 1);

    return distance;

}

我所做的是根据可用性附加值并删除最终的值/


查看完整回答
反对 回复 2023-08-24
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信