Заимстоввание методов не пробовали?
var myObj = {
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"length": 4
};
alert( myObj["2"] ); // 2
Array.prototype.splice.call(myObj, 2, 1);
alert( myObj["2"] ); // 3
Если и это не подходит, значит, придётся реализовывать своюь структуру данных, где выборка по ключу будет O(1), и в которой так же можно будет менять ключ.
мне кажется, что это будет трудно, посему желаю вам удачи.
вообще, такая структура данных у правил в CSS таблицах :
Удаление элемента в "жидком" листе.
я с этим сталкивался уже.
в принципе, можно глянуть в исходниках на Java, как они сделали эти списки, и так же сделать на JS - это как вариант.