我有两个用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 语句都留在这个地方,第一个 if 有效。
你不需要那么多 if,只需检查字符串
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);
只是简单地说:
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;
或类似的东西 - 现在这是不可读的!
我会这样写:
if (typeof videoUrl !== 'undefined' && videoUrl) {
if (videoUrl.indexOf('youtube') !== -1) {
//first case here
} else if (videoUrl.indexOf('vimeo') !== -1){
//second case here
}
}