1

当我想包含或排除系统文件时,我有两个变量用于(使用 minimatch glob 语法,其中!代表排除)。

var systemFiles = ['node_modules/**/*', '.git/**/*'];
var ignoredSystemFiles = ['!node_modules/**/*', '!.git/**/*'];

但这感觉有点多余。有没有一种简单的方法可以将systemFiles数组转换为ignoredSystemFiles数组(即:systemFiles用 a 为所有项目添加前缀!)?

我知道!systemFiles这不起作用,但是像这样紧凑的东西会很棒,因为它可以让我消除ignoredSystemFiles变量。

4

2 回答 2

6

你可以用这个

var systemFiles = ['node_modules/**/*', '.git/**/*'];
var ignoredSystemFiles = systemFiles.map(function(el) { return '!' + el } );
于 2014-05-18T16:26:54.003 回答
2

一个简单的循环应该做到这一点:

var ignoredSystemFiles = new Array(systemFiles.length);
for(var i = 0; i < systemFiles.length; i++) {
    ignoredSystemFiles[i] = '!' + systemFiles[i];
}

或者,如果您使用足够新的浏览器并且不关心 ie < 9;

var ignoredSystemFiles = systemFiles.map(function(v) { return '!' + v; })
于 2014-05-18T16:27:16.817 回答