ma la struttura è fissa? Perché secondo me c'è un livello di troppo. Se la puoi cambiare ti consiglio una delle due:

codice:
{
   "id1":
         {"rank":0.36787944117144233,
           "tipo":"Maurolico",
           "H":"Alice",
           "K":"Alice"},
    "id2":
         {"rank":0.36787944117144233,
           "tipo":"Papalina",
           "H":"Alice",
           "K":"Alice"},
    "id3":
         {"rank":0.36787944117144233,
          "tipo":"Lacerto",
          "H":"Alice",
          "K":"Alice"},
    "id4":
         {"rank":0.36787944117144233,
           "tipo":"Anguilla",
           "H":"Alice",
           "K":"Alice"}
}
Oppure:

codice:
[
         {
           "id" : "id1",
           "rank":0.36787944117144233,
           "tipo":"Maurolico",
           "H":"Alice",
           "K":"Alice"},
         {
           "id" : "id2",
           "rank":0.36787944117144233,
           "tipo":"Papalina",
           "H":"Alice",
           "K":"Alice"},
         {
           "id" : "id3",
           "rank":0.36787944117144233,
           "tipo":"Lacerto",
           "H":"Alice",
           "K":"Alice"},
         {
           "id" : "id3",
           "rank":0.36787944117144233,
           "tipo":"Anguilla",
           "H":"Alice",
           "K":"Alice"}
]
In ogni caso, per ciclare su di una struttura di dati si fa in questo modo:

Codice PHP:
//Metti di avere un oggetto:
var obj = {
   
"key1" "Val1",
   
"key2" "Val2",
   
"key3" "Val3",
   
"key4" "Val4",
   
"key5" "Val5"
};

//Tu puoi ciclare per chiave valore con un for

for(var key in obj){ //Si legge "Per ogni chiave 'key' nell'Oggetto 'obj' fai"
   
var val obj[key];
   
//Ora in key hai la chiave ed in val hai il valore, il ciclo analizza tutto l'oggetto
}

//Per un array il discorso è più semplice
var arr = [1,2,3,4,5,6,7,8,9];

//Sempre usando un for
for(var 0arr.lengthi++){ //Si legge "Data una variabile 'i' uguale a 0, fintanto che 'i' è minore della lunghezza dell'array 'arr', esegui il seguente codice incrementando i di uno ad ogni ciclo
   
var val arr[i];
   
//Ora in val c'è il valore corrispondente all'indice i

A questo punto prendendo in esame la tua struttura JSON:
Codice PHP:
var jsonObj = eval(jsonStr); //Metti che in jsonStr c'è la stringa JSON

//Esternamente è un array quindi:
for(var 0jsonObj.lengthi++){
   var 
singleObj jsonObj[i];
   
//Ora ho in singleObj l'oggetto esterno, non so a priori la chiave che avrà l'oggetto quindi
   
for(var id in singleObj){
       var 
obj singleObj[id];
       var 
rank obj.rank;
       var 
tipo obj.tipo;
       var 
obj.H;
       var 
obj.K;
       
//Ora ho tutti i valori e posso agire di consequenza.
   
}

P.S. chiaramente se cambi la struttura del JSON devi cambiare lo script di consequenza