I have a javascript object called file, I am trying to check if this object has file.xhr.response property contained in it. I have tried like this..
if (file.xhr.response) { console.log(Exists); } else { console.log(Missing); }
This works when file.xhr.response exists but if it doesn’t then it throws an error…
Uncaught TypeError: Cannot read property 'response' of undefined
Where am I going wrong?
Advertisement
Answer
You can check if object property exists using:
if (file && file.xhr && file.xhr.response) { // your logic... }
Code:
const a = { b: { d: 'd' } } const resultC = a && a.b && a.b.c ? 'Exists' : 'Missing'; console.log('a.b.c', resultC); const resultD = a && a.b && a.b.d ? 'Exists' : 'Missing'; console.log('a.b.d', resultD);
But if you are dealing with a complex/bigger object you can recursively search for the property within the object
Code:
const a = { b: { d: { d: { e: { f1: { g: { h: 'h', } }, f2: { g: { h: { i: 'i', }, }, }, }, }, }, }, } const checkObjectProp = (o, p) => Object .keys(o) .some(k => k === p || (typeof o[k] === 'object' && checkObjectProp(o[k], p))) const resultI = checkObjectProp(a, 'i') ? 'Exists' : 'Missing' console.log(resultI)