Как найти ключ объекта, зная только внутренний ключ?
Подскажите пожалуйста, есть объект с большим количеством ключей, у всех этих ключей может быть неограниченная вложенность, как найти ключ первой вложенности зная только название вложенного ключа?
const test = {
x: {
x1: 1,
x2: {
x3: 2
}
},
y: {
y1: 1,
y2: {
y3: 2
},
}
}
Как найти x, если есть только название внутреннего ключа?
Ответы (1 шт):
Автор решения: SwaD
→ Ссылка
Воспользуемся встроенным методом объекта Object.entries для преобразования объекта к массиву вида [ [ключ, значение], [ключ2, значение2] ]
Далее будем рекурсивно обходить все ключи и сравнивать, запоминая первый.
Если ничего не найдем, вернется false
const test = {
x: {
x1: 1,
x2: {
x3: 2
}
},
y: {
y1: 1,
y2: {
y3: 2
},
}
}
function objFind(array, find, top) {
const arr = Object.entries(array);
for (let i = 0; i < arr.length; i++) {
if (arr[i][0] === find) return top ? top : arr[i][0];
const res = objFind(arr[i][1], find, !top ? arr[i][0] : top);
if (res) return res;
}
return false;
}
console.log('Find x3:', objFind(test, 'x3'));
console.log('Find y2:', objFind(test, 'y2'));
console.log('Find z4:', objFind(test, 'z4'));