用于使用字符串访问嵌套对象的正则表达式

时间:2019-02-20 04:02:19

标签: regex parsing lodash

form.register {
    width: 500px;
    margin: 400px auto 0;
    background-color: aquamarine;
}

我希望能够做到这一点:

let obj = {
   "services": [{
      "service": "hello"
   },{
      "service": "helloAgain"
   }]
}

一如既往

let ret = parse(obj, "services[].service");
// ret => ["hello", "helloAgain"]

使用lodash,后者很好,

let ret = parse(obj, "services[0].service");
// ret => "hello"

但是,他们不支持前者。

_。map将会关闭

_.get(obj, "services[0].service");

但是我必须明确地声明数组,而不是想要灵活地将其指定为字符串。

我认为一种方法是使用这篇文章:Accessing nested JavaScript objects with string key

这很有趣,特别是:

_.map(obj.services, "service");
// => ["hello", "helloAgain"]

这将允许:

s = s.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
s = s.replace(/^\./, '');           // strip a leading dot

我想是否可以修改正则表达式以允许上面的内容,以及:

"services[0].service" //(and the regex will convert it to) services.0.service

然后,我将编写一些逻辑来检查*,然后执行:

services.*.service

希望我并不太不稳定。

0 个答案:

没有答案