Возврат списка файлов на основе расширения файла с выражением JavaScript - PullRequest
0 голосов
/ 25 февраля 2019

У меня проблемы с возвратом списка файлов на основе расширения файла, и у меня недостаточно опыта работы с javascript, чтобы знать правильный синтаксис для достижения этой цели.Выражение обрабатывает file.basename, но не file.nameext, поэтому я не уверен, как эффективно анализировать.Это делается для того, чтобы написать выражение javascript в инструменте выражения Common Workflow Language, как часть рабочего процесса.

Если в каталоге есть файлы .txt, .gz и .gz.foo, я хотел бы вернутьсписок всех файлов .gz.

${
  var gzs = [];

  for (var i = 0; i < inputs.dir.listing.length; i++) {
    var file = inputs.dir.listing[i];
    if file.basename.match(".gz"); {
      gzs.push(file);
    }
  }

  return {
    "gzs": gzs
  };
}

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Вы можете разделить имя файла, используя split и точку (.) в качестве разделителя.Это даст массив.В этом массиве проверьте последний элемент.Если это совпадает, поместите файл в массив.

Во-вторых, вы используете оператор return, но я не вижу функции.Поместите свой код в функцию

let inputs = {
  dir: {
    listing: ['abc.gz', 'def.sb', 'ghi.gz', 'jkl.er.km']
  }
}

function giveGzFile() {
  let gzs = [];
  for (var i = 0; i < inputs.dir.listing.length; i++) {
    var file = inputs.dir.listing[i];
    let splitedFileName = file.split('.');
    if (splitedFileName[splitedFileName.length - 1] === "gz") {
      gzs.push(file);
    }
  }
  return {
    "gzs": gzs
  };
}
console.log(giveGzFile())
0 голосов
/ 25 февраля 2019
\.gz$

является более правильным регулярным выражением для вас.Символ точки должен быть экранирован, и $ будет проверять подстроку .gz только в конце строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...