Использование функции get
позволяет избежать проблемы невозможности получения атрибута, если не получен ключ длинной цепочки. В настоящее время при выполнении предотвращения исключений и его услуг, таких как o.a && o.a.b && o.a.b.c && o.a.b.c.d
Реализация аналогична lodash.get [2] со следующими тестовыми примерами:
const object = { 'a': [{ 'b': { 'c': 3 } }] }; //=> 3 get(object, 'a[0].b.c'); //=> 3 get(object, 'a[0]["b"]["c"]') //=> 10086 get(object, 'a[100].b.c', 10086);
Последующие вопросы:
“ 1. Как реализовать функцию lodash.get с использованием нотации ts? “
Код смотрите, как реализовать функцию, аналогичную lodash.get — codepen [3]
function get (source, path, defaultValue = undefined) { // a[3].b -> a.3.b -> [a, 3, b] const paths = path.replace(/\[(\w+)\]/g, '.$1').replace(/\["(\w+)"\]/g, '.$1').replace(/\['(\w+)'\]/g, '.$1').split('.') let result = source for (const p of paths) { result = result?.[p] } return result === undefined ? defaultValue : result } const object = { a: [{ b: { c: 3 } }] }; const result = _.get(object, 'a[0].b.c', 1);