我正在尝试遍历一个键中的对象:javascript中的value数组,以便对gulpJS concat用途的js文件路径数组使用string.prototype.replace方法。
这里的目标是抽出GULP可用的路径列表,但目前需要先处理这些路径。为此,我将路径数组中的现有“占位符”值替换为它在subs数组中的相应替换值并循环直到所有路径都是字面值。
问题是我希望控制台返回循环即未处理/修复的路径。 '../ test4'(文字路径)所以我可以忽略它们,并在循环完成后用它们做东西。
这是我到目前为止用于演示目的的一些测试数据:
function fixPaths(substitutionsArray, pathArray) {
var fixedPaths = [];
pathArray.forEach(function (path, index, array) {
console.log('processing line ' + (index + 1) + '... ' + path);
Object.keys(substitutionsArray).forEach(function (placeholder) {
var substitution = substitutionsArray[placeholder];
var fixPath = path.replace(placeholder, substitution);
if (fixPath == path) {
console.log('No replacement has been found in path ' + path + ' for placeholder ' + placeholder);
} else {
console.log('Replacement found in path ' + path + ' for placeholder ' + placeholder + ' resulting in ' + fixPath);
fixedPaths.push(fixPath);
}
}
)
});
console.log(fixedPaths);
return fixedPaths;
}
var subs = {
"@COMMON_JS@": "/test1",
"@COMMON_ROOT@": "/test2",
"@COMPONENT_ROOT@": "/test3",
"@COMPONENT_WEB_ROOT@": "/components"
};
var paths = ['@COMMON_JS@/test1', '@COMMON_ROOT@/test2', '@COMPONENT_ROOT@/test3', '../test4', '../../test5'];
result = fixPaths(subs, paths);
console.log(result);
return;
有关如何最好地实现此目的的任何建议?
非常感谢 - 本
答案 0 :(得分:0)
控制台无法返回路径。 Console.log总是返回undefined
...如果需要,你可以创建一个函数来返回你传入的值然后记录它,如下所示:
function log(){ console.log.apply(console,arguments) 返回参数 }
这会返回你传递给它的参数。你可以在这里阅读更多关于参数对象的内容:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments