javascript - если и или (||) оператор - PullRequest
0 голосов
/ 18 февраля 2020
if (window.location.pathname == "/" || window.location.pathname == "/yyy.asp") {
  runSlideShow();
}
if (
  window.location.pathname == "zzzz.html" ||
  window.location.pathname == "/xxx.html"
) {
  runSlideShow();
}

Как объединить операторы , если , так что есть только один {runSlideShow();}, а не два;

в настоящее время у меня не может быть больше двух window.location. операторы пути с || между.

Ответы [ 7 ]

4 голосов
/ 18 февраля 2020

Можно объединить ваши условия и значительно сократить код.

if (['/', '/yyy.asp', 'zzzz.html', '/xxx.html'].includes(location.pathname))
    runSlideShow();

Или, к черту, короче, но еще короче, но менее читабельно / масштабируемо:

if (/^(?:(\/(yyy\.asp|xxx\.html)?)|zzzz\.html)$/.test(location.pathname))
0 голосов
/ 23 февраля 2020
if (['/', '/yyy.asp', 'zzzz.html', '/xxx.html'].includes(location.pathname))
runSlideShow();

Спасибо всем, я использовал это решение.

0 голосов
/ 18 февраля 2020

Вы можете сделать это следующим образом:

if (["/", "/yyy.asp", "zzzz.html", "/xxx.html"].includes(window.location.pathname)) { 
  runSlideShow();
}

Или

if (window.location.pathname == "/" || window.location.pathname == "/yyy.asp" || 
window.location.pathname == "zzzz.html" || window.location.pathname == "/xxx.html") 
{
  runSlideShow();
}
0 голосов
/ 18 февраля 2020

Один из способов сделать ваше состояние if максимально коротким и приятным. Извлеките условия в их собственные функции.

if (shouldRunSlideShow()) {
   runSlideShow();
}

function shouldRunSlideShow() {
    return currentPathMatchesAny(["/", "/yyy.asp", "/zzzz.html", "/xxx.html"]);
}

function currentPathMatchesAny(paths) {
    return paths.includes(window.location.pathname);
}

Довольно подробный код, но я думаю, что он хорошо читается.

0 голосов
/ 18 февраля 2020

Вы можете по-разному подойти к этой проблеме

// set array with allowed paths
const pathsForSlideShow = ['/', '/yyyy.asp', 'etc...']; 
// check if path is in array if so run the slidshow
if ( pathForSlideShow.indexOf(window.location.pathname) !== -1 ) runSlideShow();

// or if you don't need to support IE
if ( pathForSlideShow.includes(window.location.pathname) ) runSlideShow();
0 голосов
/ 18 февраля 2020

Нет причин, по которым вы не сможете иметь 4 условных проверки в одном операторе if.

if (window.location.pathname=="/" || window.location.pathname=="/yyy.asp" || window.location.pathname=="zzzz.html" || window.location.pathname=="/xxx.html") {
  runSlideShow();
} 
0 голосов
/ 18 февраля 2020
if (["/", "/yyy.asp", "zzzz.html", "/xxx.html"].includes(window.location.pathname)) { 
  runSlideShow();
}

или полная гангста:

["/", "/yyy.asp", "zzzz.html", "/xxx.html"].includes(window.location.pathname) && runSlideShow();
...