let obj = {
"services": [{
"service": "hello"
},{
"service": "helloAgain"
}]
}
Я бы хотел сделать это:
let ret = parse(obj, "services[].service");
// ret => ["hello", "helloAgain"]
КАК ХОРОШО КАК
let ret = parse(obj, "services[0].service");
// ret => "hello"
с использованием lodash, с последним все в порядке, с:
_.get(obj, "services[0].service");
однако, они не поддерживают первый.
_. Map приблизится
_.map(obj.services, "service");
// => ["hello", "helloAgain"]
но я явно должен указать массив, скореечем желая гибкости определения его в виде строки.
Я думал, что подход будет использовать этот пост: Доступ к вложенным объектам JavaScript с помощью строкового ключа
, что интереснов частности:
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
Затем я бы написал логику для проверки * и затем сделал бы:
_.map(services, "service");
Надеюсь, я не слишком ошибочен.