Reputation: 311
Say I'm accessing a JavaScript Object called jso in Java and I'm using the following statement to test if it's null
if (jso == null)
However, this statement seems to return true when jso contains some null values, which is not what I want.
Is there any method that can distinguish between a null JavaScript Object and a JavaScript Object that contains some null values?
Thanks
Upvotes: 8
Views: 42636
Reputation: 45
Here is a really wasy way to do it
if (Object.values(jso).includes(null)) {
// condition
}
else{
// condition
}
Upvotes: 2
Reputation: 77536
To determine whether the target reference contains a member with a null value, you'll have to write your own function as none exist out of the box to do this for you. One simple approach would be:
function hasNull(target) {
for (var member in target) {
if (target[member] == null)
return true;
}
return false;
}
Needless to say, this only goes one level deep, so if one of the members on target
contains another object with a null value, this will still return false. As an exmaple of usage:
var o = { a: 'a', b: false, c: null };
document.write('Contains null: ' + hasNull(o));
Will print out:
Contains null: true
In contrast, the following will print out false
:
var o = { a: 'a', b: false, c: {} };
document.write('Contains null: ' + hasNull(o));
Upvotes: 19
Reputation: 79022
This is just for your reference. Do not upvote.
var jso;
document.writeln(typeof(jso)); // 'undefined'
document.writeln(jso); // value of jso = 'undefined'
jso = null;
document.writeln(typeof(jso)); // null is an 'object'
document.writeln(jso); // value of jso = 'null'
document.writeln(jso == null); // true
document.writeln(jso === null); // true
document.writeln(jso == "null"); // false
Upvotes: 6