Destroy all GameObjects EXCEPT some...

I need to Destroy all GameObjects on current scene, EXCEPT all with Player and Camers classes.
How can I do it?

    var agoAllGameObjects:GameObject[] = FindObjectsOfType(GameObject);
    for(var iGO:int = 0; iGO < agoAllGameObjects.length; iGO++)
    {
       agoAllGameObjects[iGO].GetType();       //always GameObject :(
       agoAllGameObjects[iGO].GetType("Name"); //always GameObject :(
       if(agoAllGameObjects[iGO].GetType() != Camera)
          Destroy(agoAllGameObjects[iGO]);     //Destroys EVERYTHING =((((
    }

OK, I think I see what you are after…

maybe like this?

var agoAllGameObjects:GameObject[] = FindObjectsOfType(GameObject) as GameObject[];
for(iGO in agoAllGameObjects)
{
   if(!iGO.GetComponent(Camera))
      Destroy(iGO);     
}

I can think of two ways, first for all gameobjects you get with FindObjectsOfType(GameObject) do an if asking if getComponent(“Player”) OR getComponent(“camera”) are null. If null destroy.
Another way is to use tag. Same as above but in each if you ask for the tag. if the tag is NOT player or camera (or maincamera) destroy.
and also if you want to do this to load a new level and keep your player and camera setup you can just add an atribute to the gameobjects via script called DontDestroyOnLoad Unity - Scripting API: Object.DontDestroyOnLoad
this way the objects that have that are not destroyed when changing levels.