使用replace替换对象元素字符串表示法和对象元素值

时间:2018-02-21 05:58:00

标签: javascript node.js

以下代码尝试(在单个替换调用中)使用regexp replace替换带有object元素值的对象元素字符串表示法。

但是这种方法只能观察到错误(参见下面的日志)。

示例代码尝试替换字符串<>使用对象元素obj.aa

var obj = {};
obj.aa = '1';
obj.bb = '21';
console.log('<<obj.aa>>'.replace(/<<obj\.(.*)>>/,obj['$1']));
console.log('<<obj.aa>>'.replace(/<<obj\.(.*)>>/,`obj[$1]`));
console.log('<<obj.aa>>'.replace(/<<obj\.(.*)>>/,`${obj[$1]}`));

日志如下所示:

undefined
obj[aa]

console.log('<<obj.aa>>'.replace(/<<obj\.(.*)>>/,`${obj[$1]}`));
                                                    ^

ReferenceError: $1 is not defined
    at Object.<anonymous> (source_file.js:6:57)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:442:10)
    at startup (node.js:136:18)
    at node.js:966:3

在替换呼叫线路中是否有解决方法/正确方法来实现此目的?

1 个答案:

答案 0 :(得分:1)

您需要使用a function

console.log('<<obj.aa>>'.replace(/<<obj\.(.*)>>/, (_,prop) => obj[prop]));