如何在没有2 if语句的情况下在JSX中添加If ... Else语句?

时间:2018-05-16 01:30:46

标签: javascript reactjs redux jsx

我有两个用ReactJS编写的if语句。

if (videoUrl !== undefined && videoUrl !== null && videoUrl.indexOf('youtube') !== -1) 
{
   videoUrl = videoUrl.replace("watch?v=", "embed/")
}
if (videoUrl !== undefined && videoUrl !== null && videoUrl.indexOf('vimeo') !== -1) 
{
   videoUrl = videoUrl.replace("https://vimeo.com/", "https://player.vimeo.com/video/")
}

我不知道如何制作这些if else声明,因此可以在youtube或Vimeo之间进行检查。现在我只能使用一个if语句。如果我在这个地方留下两个if语句,那么首先是有效的。

3 个答案:

答案 0 :(得分:2)

如果只是检查字符串

,你就不需要那么多



let videoUrl = 'https://vimeo.com/';
if (typeof videoUrl === 'string') {

  if(videoUrl.indexOf('youtube') !== -1) {
     videoUrl = videoUrl.replace("watch?v=", "embed/");
   }
   if (videoUrl.indexOf('vimeo') !== -1) {
     videoUrl = videoUrl.replace("https://vimeo.com/", "https://player.vimeo.com/video/");
   }
}

console.log(videoUrl);

// Another option is to use regex
videoUrl = 'https://vimeo.com/';
if (/youtube/.test(videoUrl)) {
   videoUrl = videoUrl.replace("watch?v=", "embed/");
}
if (/vimeo/.test(videoUrl)) {
  videoUrl = videoUrl.replace("https://vimeo.com/", "https://player.vimeo.com/video/");
}
console.log(videoUrl);




答案 1 :(得分:1)

只是这个:

if (videoUrl !== undefined && videoUrl !== null)
{
    if (videoUrl.indexOf('youtube') !== -1) {
        videoUrl = videoUrl.replace("watch?v=", "embed/")
    }
    else if (videoUrl.indexOf('vimeo') !== -1) {
        videoUrl = videoUrl.replace("https://vimeo.com/", "https://player.vimeo.com/video/")
    }
}

删除重复的检查,更容易阅读。除非您开始使用if运算符玩游戏,否则您无法使用单个?:轻松完成此操作。

事实上,让我们玩游戏吧!

videoUrl = (videoUrl !== undefined && videoUrl !== null) ?
              (videoUrl.indexOf('youtube') !== -1) ? 
                  videoUrl.replace("watch?v=", "embed/") :
                  (videoUrl.indexOf('vimeo') !== -1) ?
                      videoUrl.replace("https://vimeo.com/", "https://player.vimeo.com/video/") :
                  null :
               null;

或类似的东西 - 现在 是不可读的!

答案 2 :(得分:0)

我会写如下:

if (typeof videoUrl !== 'undefined' && videoUrl) {
  if (videoUrl.indexOf('youtube') !== -1) {
    //first case here
  } else if (videoUrl.indexOf('vimeo') !== -1){
    //second case here
  }
}