Javascript/jQuery undefined object length -


i have object being created database call in following format:

object { group1={...},  same=null,  group2=null} 

enter image description here

i trying count of items in group1, group2, , same.

i accessed through console so:

dataobj.group1.length 

in image above, returns undefined. however, if have more 1 item in group1, returns count fine. appears cause issues when there single item in object/array.

is there function can used account these possibilities , return length of items in objects above?

update:

this how creating data:

success: function(data) {          // define our data response         var d = data.data;          // push our data object         dataobj = {             same: (d.same ? d.same.tools : null),             group1: (d.group1 ? d.group1.tools : null),             group2: (d.group2 ? d.group2.tools : null)         }          // render our table         rendercompare();     } 

from here, trying amount of items in same, group1, group2.

this example of when more 1 item in response. able access using dataobj.group1.length , returns 2 correct. trying figure out how handle when there 1 result. enter image description here

after having question correctly explained me after head turned block of wood, it's case of covering eventualities. @kevinb correctly states, should sanitise response data returns array of objects, if there's 1 object or no objects in it. that's what's causing problem.

if response...

{     group1: { tool: 244, toolname: "blueprint" },     group2: null,     same: null } 

then group1 object, not array, therefore has no length property. if, however, got response instead...

{     group1: [{ tool: 244, toolname: "blueprint" }],     group2: null,     same: null } 

then group1 hold same data, array , therefore have length property.

what suggest simple function evaluate objects , return expected response, this...

function getlength(obj) {     if (obj == null) return 0;     if (obj.length == undefined) return 1;     return obj.length; } 

in example, use getlength(dataobj.group1) , return 1. return 0 if null , return actual length if array.


Comments