@Axepec

JS Как имея название параметра внутри объекта найти его(просмотрев все вложенные объекты) и!!! получить к нему путь?

Приветствую господа, помогите!!
имеем параметр name, все хорошо, просто отлично!
имеем объект:

object {
client: {
name: 'Вася'
phone: '799999999'
}
order: {
param1: '2122'
param2: '1231'
}
}

Как найти путь к этому name?
то есть получить ------> object.client.name
если параметр param2 то соответственно object.order.param2

p.s. объекты большие, но повторений параметров нет, если использовать for in не могу вывести путь....
  • Вопрос задан
  • 715 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Хотя вопрос больше похож на "сделайте все за меня", сама задачка показалась мне интересной, вот решение:
function findParamPath(obj, prop) {
    if(obj.hasOwnProperty(prop)) return prop;
    var props = Object.getOwnPropertyNames(obj);
    for(var i = props.length; i--; ) {
        if(typeof obj[props[i]] !== 'object') continue;
        var path = findParamPath(obj[props[i]], prop);
        if(path) return props[i] + '.' + path;
    }
    return null;
}


тестим:
var obj = {
    object : {
        client : {
            name : 'Вася',
            phone : '799999999'
        },
        order : {
            param1 : '2122',
            param2 : '1231'
        }
    }
};

console.log(findParamPath(obj, 'name')); // 'object.client.name'
console.log(findParamPath(obj, 'param1')); // 'object.order.param1'
console.log(findParamPath(obj, 'unknown')); // null (не найдено)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы