Extract objects out of an array

This needed to be tested so it could be used in production code.

by Matt Rummler

JavaScript

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);

function extractObjectsArray(data,TargetObject)
{
    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')//this is only done because we know the type of data = array already... so then if that array contains an object... probably should check for a count of objects before doing this...
      {
        if(data.length>1)
        {
//              alert('data was found to posses more elements than one');
          TargetObject[key]=value;//,TargetObject);
        }
        else
        {
//              alert('data was found to posses only one element');
          data=extractObjectsArray(value);
        }
      }
      else if(Object.toType(value)==='array')
      {
//            alert('data contains another array so recursing');
        data=extractObjectsArray(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]=extractObjectsArray(value2);
      }
    });
    return data;
  }
}
function printOutObject(Obj)
{
  Object.forEach(Obj, function(value, key)
  {
      alert('Obj has a key...