Как вывести в консоль значение объекта по строке

248
27 сентября 2017, 12:25
let obj = {
  summaryNinety:{
    children:{
      medianUnitCost:{
        errors:'errors'
      }
    }
  }
};

Нужно как то так

console.log(obj['summaryNinety.children.medianUnitCost']);

Но сработает как то так

console.log(obj['summaryNinety']['children']['medianUnitCost']);

Подскажите как по строке добраться до свойства

Если сделать так получится массив

let id = 'summaryNinety.children.medianUnitCost';
let arr = id.split('.');

Но как его подставить?

Answer 1

Можно вот так

let obj = { 
  summaryNinety:{ 
    children:{ 
      medianUnitCost:{ 
        errors:'errors' 
      } 
    } 
  } 
}; 
 
console.log('summaryNinety.children.medianUnitCost.errors'.split('.').reduce((a,v)=>{ 
  if(a === null){ 
    return obj[v]; 
  } 
  return a[v]; 
}, null));

Answer 2

Как-то так:

function getObjectData( object, path ){
    let dataParams = path.split('.');
    if( ! dataParams.length ){
        return object;
    }
    let ret = object[dataParams[0]];
    for( let i = 1; i < dataParams.length; i++ ){
        ret = ret[dataParams[i]];
    }
    return ret;
}

Соответственно вывод в консоль следующий: console.log( getObjectData( obj, 'summaryNinety.children.medianUnitCost' ) );

READ ALSO
LDAP Search - Ошибка поиска

LDAP Search - Ошибка поиска

Добрый деньПытаюсь получить данные из AD, подключаюсь, всё нормально, на строке поиска выдает ошибку: Warning: ldap_search(): Search: Operations error Просмотрел...

192
Вытащить из базы данных MySQL

Вытащить из базы данных MySQL

Всем привет, есть база занных, в которых одно из полей является JSON данными в формате:

244
Как к сайту приделать форму оплаты через сбербанк ?

Как к сайту приделать форму оплаты через сбербанк ?

Как к сайту приделать форму оплаты через сбербанк ? Или можно ссылку где посмотреть

222
simple_html_dom получить содержимое первого тега

simple_html_dom получить содержимое первого тега

Почему к первому тегу залипает второй тег textarea когда явно указываю на первый

259