Node.js过滤多个项的数组

我有一个文件数组,其中包含一组文本文件,格式如下:

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

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

var recursiveReadSync = require('recursive-readdir-sync'), var fs = require('fs'); var foundFiles = []; var files = fs.readdirSync(url); 

我通过一个文件recursion,为了不粘贴我的整个代码的简单性,假设文件数组包含上面列出的项目。 我不知道如何过滤这个文件数组,我已经看了几个nodeJS API,并没有发现任何东西

Array.filter是你正在寻找的(如果你只想要ssi / inc文件,删除非运算符! ):

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

另一种解决scheme,不使用正则expression式,并使用path模块:

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

如果您想要限制的扩展名列表是可configuration的,这更容易维护。