将括号符号替换为dot符号-javaScript



我正在使用一个仅包含点符号(包括数组)的编译器。例如,对于以下对象:

 var defaults = {
     'background-color': '#000',
     color: '#fff',
     tokens: [{token: '3der3ergfg44effg'},{token: '3dertkyohlhjeffg'},[
            {tokenNest: 'sgvchjjd3fe5yd522s'},
            {boomer: [33]}]]
    };
    console.log(defaults.tokens[2])
    console.log(defaults.tokens[2][0])
    console.log(defaults.tokens[2][1].boomer[0])

我的编译器期望路径在点表示法

的方式

例如,defaults.tokens[2]应为defaults.tokens.2defaults.tokens[2][0]应为defaults.tokens.2.0

如果我想访问数字33,我必须通过的路径是defaults.tokens.2.1.boomer.0而不是defaults.tokens[2][1].boomer[0]

预先感谢!

您将无法使用正则表达式执行此操作,因为Square Brackets可能会出现在注释,字符串文字中,甚至还用于数组文字,除了对象属性属性引用。<<<<<<<<<<<<<<<<<<<<<<<</p>

我看到您在评论中澄清了这个问题。

看来您想使用JavaScript代码,并用虚线访问替换包围的属性访问。这是如何做的。

获取Esprima并使用它来解析您的JavaScript代码。这将为您提供一个用于JavaScript的抽象语法树。浏览该树,以所谓的语言输出文本。大多数一切都会通过未触及的,但是每当您看到属性访问时,您都会写出一些符号。

但是要当心!这个过程听起来像是一个可怕的主意!

如果您的JavaScript看起来像这样?

myObject["x; eraseMyData();"]

它会变成

myObject.x; eraseMyData();

我认为您可能想放弃这个项目。JavaScript使用括号符号是有充分理由的!

最新更新