以下代码尝试(在单个替换调用中)使用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
在替换呼叫线路中是否有解决方法/正确方法来实现此目的?
答案 0 :(得分:1)
您需要使用a function:
console.log('<<obj.aa>>'.replace(/<<obj\.(.*)>>/, (_,prop) => obj[prop]));