Die folgende Map möchte ich nach pos0 und pos1 sortieren....

var imap = {
    1: {
        name: 'Test 3',
        pos0: 30,
        pos1: 20
    },
    2: {
        name: 'Test 1',
        pos0: 10,
        pos1: 30
    },
    3: {
        name: 'Test 2',
        pos0: 20,
        pos1: 10
    }
}

Diese Funktion erledigt dies:

function mapSort(map,sortBy)
{
    /* Array mit den Positionen: 0,1,2... */
    var posArr = new Array();
    /* Array mit den Keys */
    var keyArr = new Array();
    /* Array mit den Sortier-Werten  */
    var valueArr = new Array();

    /* die neue Map */
    var newMap = {}

    /* Counter zum Generieren von posArr */
    var cnt = 0;

    /* alle keys aus der map holen & arrays befüllen */
    for ( var i in map )
    {
        // pos
        posArr[cnt] = cnt;
        // key
        keyArr[cnt] = i
        // value
        valueArr[cnt] = map[i][sortBy]

        cnt++       
    }
    // posArr nach Daten aus valueArr sortieren
    var sPosArr = posArr.sort(function(a,b) {
        return valueArr[a]-valueArr[b];
    });

    // neue Map befüllen
    for ( var i = 0; i < sPosArr.length ; i++)
    {
        var k = keyArr[sPosArr[i]];
        newMap[i] = map[k];
    }
    return newMap;
}