Доступ к чему-то внутри объекта, когда вы не знаете ключ
Я получаю следующий объект
{
IuW1zvaSABwH4q: {
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'd501-f-b601-c8b1-4bd995e',
schemaType: 'xman-assets-image-set'
}
}
Теперь я хочу получить доступ к значению thumbID внутри него, т.е. d501-f-b601-c8b1-4bd995e
Но мой корневой ключ кажется динамическим/случайным (IuW1zvaSABwH4q). Как я могу получить доступ к значению внутри него?
Ответы
Ответ 1
Вы можете получить значения из объекта, а затем получить доступ к нужному ключу.
let obj = {
IuW1zvaSABwH4q:
{
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'd501-f-b601-c8b1-4bd995e',
schemaType: 'xman-assets-image-set'
}
}
let op = Object.values(obj)[0].thumbId
console.log(op)
Ответ 2
Вы можете использовать Array.map
для его преобразования и Array.forEach
чтобы получить его и распечатать в консоли.
const obj = {
IuW1zvaSABwH4q: {
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'd501-f-b601-c8b1-4bd995e',
schemaType: 'xman-assets-image-set'
},
YuW1zvaSABwH7q: {
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'as90-f-b601-c8b1-4bd9958',
schemaType: 'xman-assets-image-set'
}
};
//for one object
console.log(Object.values(obj)[0].thumbId);
//multiple unknown keys
Object.values(obj).map(ele => ele.thumbId).forEach(th=> console.log(th));
Ответ 3
Предполагая, что есть только одно свойство, вы можете получить к нему доступ через первое свойство.
const obj = { IuW1zvaSABwH4q:
{ label: 'Random Image of TypeScript not relavent to coworking', thumbId: 'd501-f-b601-c8b1-4bd995e', schemaType: 'xman-assets-image-set'
}
};
console.log(obj[Object.getOwnPropertyNames(obj)[0]].thumbId);
Ответ 4
Вы можете использовать for..in
для итерации объекта, а затем проверить, имеет ли этот объект ключ по имени thumbId
. Эта проверка гарантирует, что код не выдаст ошибку, если у объекта нет ключа thumbId
let obj = {
IuW1zvaSABwH4q: {
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'd501-f-b601-c8b1-4bd995e',
schemaType: 'xman-assets-image-set'
}
}
for (let keys in obj) {
if (obj[keys].hasOwnProperty('thumbId')) {
console.log(obj[keys].thumbId);
}
}
Ответ 5
Пытаться
Object.entries(obj)[0][1].thumbId
const obj= {
IuW1zvaSABwH4q: {
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'd501-f-b601-c8b1-4bd995e',
schemaType: 'xman-assets-image-set'
}
}
//for(let o in obj) console.log(obj[o].thumbId);
let t=Object.entries(obj)[0][1].thumbId;
console.log(t);
Ответ 6
Используя подчеркивание
let yourObject = {
IuW1zvaSABwH4q: {
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'd501-f-b601-c8b1-4bd995e',
schemaType: 'xman-assets-image-set'
}
}
_.pluck(_.values(yourObject),'thumbId');
// ["d501-f-b601-c8b1-4bd995e"]
Вы также можете использовать _.first
для безопасного доступа к первому элементу массива
Ответ 7
Альтернативный способ использования комбинации
JSON.stringify()
и split()
const obj = {
IuW1zvaSABwH4q: {
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'd501-f-b601-c8b1-4bd995e',
schemaType: 'xman-assets-image-set'
}
}
let thumbId = JSON.stringify(obj).split('"thumbId":')[1].split('"')[1].split('"')[0]
console.log(thumbId)
Ответ 8
var json = {
IuW1zvaSABwH4q: {
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'd501-f-b601-c8b1-4bd995e',
schemaType: 'xman-assets-image-set'
},
IuW2zvaSABwH4q: {
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'd501-f-b601-c8b1-4bd995e',
schemaType: 'xman-assets-image-set'
},
IuW3zvaSABwH4q: {
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'd501-f-b601-c8b1-4bd995e',
schemaType: 'xman-assets-image-set'
}
}
for (var key in json) {
if (json[key]) {
for (var x in json[key]) {
if (x === 'thumbId') console.log(json[key][x]);
}
}
}