javascript - 如何将此 else if 语句转换为 switch 语句?

标签 javascript jquery switch-statement

我创建了一个函数来每秒检查网站的当前 URL 并更改 <head> 中的元标记图像。 HTML 元素根据一定的值字符串。我的代码是完美的,但是我想让我的代码更具可读性 7 优化...所以我想把这段代码变成 switch 语句,但我现在无法自己弄清楚。

代码如下:

// Variable declarations
var imgOgSrc = $('meta[property="og:image"]');
var twitterImgSrc = $('meta[name="twitter:image:src"]');
var currentUrl;

// Checks for current url & changes meta tags depending on slug value
function getCurrentUrl(){
    currentUrl = window.location.href;
    
    if(currentUrl.toLowerCase().indexOf('python') >= 0) {
            imgOgSrc.attr('content', 'http://carrieres.nameofwebsite.com/static/img/custom-img.jpg');
            twitterImgSrc.attr('content', 'http://carrieres.nameofwebsite.com/static/img/custom-img.jpg');
    }   else if (currentUrl.toLowerCase().indexOf('java') >= 0) {
            imgOgSrc.attr('content', 'http://carrieres.nameofwebsite.com/static/img/custom-img.jpg');
            twitterImgSrc.attr('content', 'http://carrieres.nameofwebsite.com/static/img/custom-img.jpg');
    }   else if (currentUrl.toLowerCase().indexOf('php') >= 0) {
            imgOgSrc.attr('content', 'http://carrieres.nameofwebsite.com/static/img/custom-img.jpg');
            twitterImgSrc.attr('content', 'http://carrieres.nameofwebsite.com/static/img/custom-img.jpg');
    }
        else {
            imgOgSrc.attr('content', currentUrl);
            twitterImgSrc.attr('content', currentUrl);
    }
}   

最佳答案

由于所有 if 条件都有相同的代码,您可以使用 some像这样。

function getCurrentUrl() {
  currentUrl = window.location.href;
  const customUrlNeeded = ['python', 'java', 'php'].some(a => currentUrl.toLowerCase().includes(a))

  if (customUrlNeeded) {
    imgOgSrc.attr('content', 'http://carrieres.nameofwebsite.com/static/img/custom-img.jpg');
    twitterImgSrc.attr('content', 'http://carrieres.nameofwebsite.com/static/img/custom-img.jpg');
  } else {
    imgOgSrc.attr('content', currentUrl);
    twitterImgSrc.attr('content', currentUrl);
  }

}

关于javascript - 如何将此 else if 语句转换为 switch 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598349/

相关文章:

javascript - 阵列与交换机的优势

c# - Resharper 能否将 case 语句格式化为与 case 本身在同一行开始?

javascript - 遍历 DOM 并获取 ID

jquery - Firefox 的 CSS3 问题

javascript - 如何使用 JS 验证 VSTS API PAT

javascript - Rails3 中的 Google Instant 式搜索

c# - 跳过 Switch 后的语句

java - MongoDB 返回最近一个月每天的文档数

javascript - 在 Mobile Safari/Android 中通过电子邮件发送当前 URL

javascript - 使用 CSS 的楼梯或台阶效果