Использование логического оператора в .include () - получение ошибки - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть код, который добавляет значок расширения файла рядом с конкретным документом, т. Е. Все 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

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

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

if (docStr[i].includes('doc') || docStr[i].includes('doc'))
1 голос
/ 10 апреля 2019

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

Попробуйте

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