Extract objects out of an array 2
This needed to be tested so it could be used in production code.
by Matt Rummler
HTML
<body>
<section id='firstSection'>
<div>
div in the first section
</div>
</section>
<section id='secondSection'>
<div>
div in the second section
</div>
</section>
</body>
JavaScript
/*** SUPPORTING METHODS/UTILITIES ***/
Object.forEach=(function forEach()
{
return function(obj,fn)
{
if(obj.length)
{
for (var i = 0, ol = obj.length, v = obj[0]; i < ol && fn(v, i) !== false; v = obj[++i]);
}
else
{
for (var p in obj) if (fn(obj[p], p) === false) break;
}
};
})(this);
Object.toType = (function toType(global)
{
return function(obj)
{
if (obj === global)
{
return "global";
}
return ({}).toString.call(obj).match(/\s([a-z|A-Z]+)/)[1].toLowerCase();
};
})(this);
/****/
/*** MAIN FUNCTION BEING TESTED ***/
function removeJSONobjectsArrays(data,TargetObject)
{
// alert('just inside removeJSONobjectsArrays');
var localContext=this;
TargetObject=TargetObject || {};
if(Object.toType(data)==='array')
{
// alert('data was found to be an array');
Object.forEach(data, function(value, key)
{
if(Object.toType(value)=='object' && Object.toType(value)!==null && Object.toType(value)!=='undefined')
{
TargetObject[key]=value;//,TargetObject);
data=removeJSONobjectsArrays(value);
}
else if(Object.toType(value)==='array')
{
// alert('data contains another array so recursing');
data=removeJSONobjectsArrays(data);//shouldn't this be value & not data??
}
});
if(Object.getOwnPropertyNames(TargetObject).length>1)
{
return TargetObject;
}
else
{
return data;
}
}
else if(Object.toType(data)=='object')
{
// alert('data was found to be an object');
Object.forEach(data, function(value2,key2)
{
if(Object.toType(value2)==='array')
{
data[key2]=removeJSONobjectsArrays(value2);
}
});
return data;
}
}
/****/
/*** FUNCTIONS TO SHOW RESULTS OF MAIN FUNCTION ***/
function writeComplexObjectToTarget(data,contentType,OptionObj)
{
...