Использование логического оператора внутри .includes() — получение ошибки

#javascript #jquery #function #operators

#javascript #jquery #функция #операторы

Вопрос:

У меня есть некоторый код, который добавляет значок расширения файла рядом с определенным документом, т. Е. Все файлы .pdf имеют значок PDF рядом с ним.

Некоторые документы заканчиваются на doc и DOCX , и поэтому я попытался реализовать .includes('doc' || 'DOCX') , но я получаю сообщение об ошибке и DOCX в итоге не загружаюсь. Таким образом, я только что сделал .includes('ext name')) { return … и т.д. для каждого варианта, но это громоздко, и я хочу посмотреть, можно ли их сократить.

Я попытался выяснить, разрешены ли логические операторы .includes() , но ничего не получилось. Это причина, по которой я получаю сообщение об ошибке, или есть другая причина?

Вот мой JS:

 function docType(fileName) {
    let docImg = "<img src='https://url/Current.ashx/docx.gif'  />"
    let msgImg = "<img src='https://url/Current.ashx/msg.gif'   />"

    let docStr = fileName.split(".");
      for (var i = 0; i < docStr.length; i  ) {
       if (docStr[i].includes('doc' || 'DOCX')) { return docStr[i] = docImg;  } 
  else if (docStr[i].includes('msg')) { return docStr[i] = msgImg;  } 

      }
  } // docType
  

Комментарии:

1. Не будет работать. Необходимо проверять индивидуально includes или выполнять регулярное выражение

Ответ №1:

Кроме нескольких включений или регулярного выражения, вы также можете использовать Array#some()

Попробуйте

 if(['doc','DOCX'].some(s = > docStr[i].includes(s)))
  

Комментарии:

1. Это сделало свое дело и было тем, что я искал. Спасибо!

2. Вероятно, нет реальной причины проверять части перед последней . , если вы хотите проверять только расширения файлов

Ответ №2:

includes проверяет значение, переданное в качестве аргумента. Он не оценивает какой-либо пользовательский код во время проверки. Вам нужно будет использовать

 if (docStr[i].includes('doc') || docStr[i].includes('doc'))
  

Комментарии:

1. docStr[i] была бы строка из split()

2. @charlietfl Спасибо, я устал :-/