【问题标题】:Node.js filter array with multiple terms具有多个术语的 Node.js 过滤器数组
【发布时间】:2015-05-14 17:01:10
【问题描述】:

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

[测试/fixtureData/fixtureData2/test3.inc, 测试/fixtureData/fixtureData3/test5.inc, 测试/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);

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

【问题讨论】:

    标签: javascript arrays node.js filter


    【解决方案1】:

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

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

    如果您希望限制扩展的列表是可配置的,这将更容易维护。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-13
        相关资源
        最近更新 更多