JS Как имея название параметра внутри объекта найти его(просмотрев все вложенные объекты) и!!! получить к нему путь? Приветствую господа, помогите!! имеем параметр name, все хорошо, просто отлично! имеем объект: object { client: { name: 'Вася' phone: '799999999' } order: { param1: '2122' param2: '1231' } } Как найти путь к этому name? то есть получить ------> object.client.name если параметр param2 то соответственно object.order.param2 p.s. объекты большие, но повторений параметров нет, если использовать for in не могу вывести путь....
Для того, чтобы найти путь к параметру внутри объекта, можно использовать рекурсивную функцию. Вот пример такой функции:
function findPath(obj, targetKey, path = '') { for (let key in obj) { if (typeof obj[key] === 'object') { let result = findPath(obj[key], targetKey, path + key + '.'); if (result) { return result; } } else if (key === targetKey) { return path + key; } } return null; } // Проверка работы функции const obj = { client: { name: 'Вася', phone: '799999999' }, order: { param1: '2122', param2: '1231' } }; const targetKey = 'name'; const path = findPath(obj, targetKey); console.log(path); // Выведет 'client.name'
Эта функция пройдет по всем свойствам объекта, и если найдет целевой ключ, то вернет путь к нему. Таким образом, при вызове функции findPath(obj, 'name'), вы получите путь client.name.
Для того, чтобы найти путь к параметру внутри объекта, можно использовать рекурсивную функцию. Вот пример такой функции:
function findPath(obj, targetKey, path = '') {for (let key in obj) {
if (typeof obj[key] === 'object') {
let result = findPath(obj[key], targetKey, path + key + '.');
if (result) {
return result;
}
} else if (key === targetKey) {
return path + key;
}
}
return null;
}
// Проверка работы функции
const obj = {
client: {
name: 'Вася',
phone: '799999999'
},
order: {
param1: '2122',
param2: '1231'
}
};
const targetKey = 'name';
const path = findPath(obj, targetKey);
console.log(path); // Выведет 'client.name'
Эта функция пройдет по всем свойствам объекта, и если найдет целевой ключ, то вернет путь к нему. Таким образом, при вызове функции findPath(obj, 'name'), вы получите путь client.name.