Node.js过滤具有多个术语的数组

时间:2015-05-14 17:01:11

标签: javascript arrays node.js filter

我有一个文件数组,其中包含一组这种格式的文本文件:

[测试/ fixtureData / fixtureData2 / test3.inc, 测试/ fixtureData / fixtureData3 / test5.inc, 测试/ fixtureData / test1.inc, ,测试/ fixtureData / test6.ssi ,测试/ fixtureData / test9.html]

我想过滤此数组,以便过滤掉'.ssi'和'.html'文件。以下代码:

var recursiveReadSync = require('recursive-readdir-sync'),
var fs = require('fs');

var foundFiles = [];
var files = fs.readdirSync(url);

我已经通过一个文件进行了递归,并且为了不简单地粘贴我的整个代码,假设files数组包含上面列出的项目。我不知道如何过滤这个文件数组,我看了几个nodeJS api并且没找到任何东西

2 个答案:

答案 0 :(得分:2)

另一种不使用正则表达式并使用path模块的解决方案:

var path = require('path');
var filteredFiles = files.filter(function(value) {
    var ext = path.extname(value);
    return ['.inc', '.ssi'].indexOf(ext) == -1;
});

如果您希望配置受限扩展列表,则更容易维护。

答案 1 :(得分:0)

您正在寻找

Array.filter(如果您只想要ssi / inc文件,请删除not运算符!):

files.filter(function(fileName) {
   return !fileName.match(/\.(inc|ssi)$/);
});