Accessing something inside the object when you don’t know the key [duplicate]
I am getting a following object
{
IuW1zvaSABwH4q: {
label: 'Random Image of TypeScript not relavent to coworking',
thumbId: 'd501-f-b601-c8b1-4bd995e',
schemaType: 'xman-assets-image-set'
}
}
Now, I want to access the value of thumbID inside it i.e. d501-f-b601-c8b1-4bd995e
But my root key seems to be dynamic/random (IuW1zvaSABwH4q), How can I access the value inside it?
You can get the values from object and than access the desired key.
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)
You can use Array.map
to transform it and Array.forEach
to get it and print it in the console.
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));
Assuming there is only one property you could access it via the first property.
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);
You can use for..in
to iterate the object then check if this object has a key by name thumbId
. This check will ensure that code does not throw error if the object does not have thumbId
key
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);
}
}
Try
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);
Using underscore
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"]
You can also use _.first
to safely access the first array element
An alternative way of using a combination of
JSON.stringify()
and 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)
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]);
}
}
}
I use two nested for to extract the thumbId.