无法返回object.keys中的对象foreach与string.prototype.replace方法

时间:2016-10-05 02:38:02

标签: javascript foreach gulp

我正在尝试遍历一个键中的对象: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;

有关如何最好地实现此目的的任何建议?

非常感谢 - 本

1 个答案:

答案 0 :(得分:0)

控制台无法返回路径。 Console.log总是返回undefined ...如果需要,你可以创建一个函数来返回你传入的值然后记录它,如下所示:

function log(){   console.log.apply(console,arguments)   返回参数 }

这会返回你传递给它的参数。你可以在这里阅读更多关于参数对象的内容:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments