#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 Спасибо, я устал :-/