Return 基于带有 javascript 表达式的文件扩展名的文件列表
Return a list of files based on file extension with a javascript expression
我在 return 根据文件扩展名生成文件列表时遇到问题,而且我没有足够的 javascript 经验来了解完成此操作的正确语法。该表达式处理 file.basename 但不处理 file.nameext,所以我不确定如何有效地解析。这是在 Common Workflow Language 表达式工具中编写一个 javascript 表达式,作为工作流的一部分。
假设该目录有 .txt、.gz 和 .gz.foo,我想要 return 所有 .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
};
}
\.gz$
是更适合您的正则表达式。点符号应该被转义,$
将只检查行尾的 .gz 子字符串。
您可以使用 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())
我在 return 根据文件扩展名生成文件列表时遇到问题,而且我没有足够的 javascript 经验来了解完成此操作的正确语法。该表达式处理 file.basename 但不处理 file.nameext,所以我不确定如何有效地解析。这是在 Common Workflow Language 表达式工具中编写一个 javascript 表达式,作为工作流的一部分。
假设该目录有 .txt、.gz 和 .gz.foo,我想要 return 所有 .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
};
}
\.gz$
是更适合您的正则表达式。点符号应该被转义,$
将只检查行尾的 .gz 子字符串。
您可以使用 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())