Como manter um objeto / matriz Javascript ordenado, mantendo também as principais pesquisas?

Tenho alguns dados que eu originalmente armazenei em um objeto Javascript genérico, com o ID como chave:

{
  "7": {"id":"7","name":"Hello"},
  "3": {"id":"3","name":"World"},
  ...
}

No entanto, descobri que os navegadores não garantem uma ordem de objeto específica ao passar por eles, de modo que "3" acima viria antes de "7". Eu mudei para usar um formato de matriz como este:

[
  {"id":"7","name":"Hello"},
  {"id":"3","name":"World"},
  ...
]

Agora, posso fazer um loop na ordem correta, mas não posso fazer pesquisas rápidas, por exemplodata["3"] sem ter que percorrer a matri

Existe uma boa maneira de combinar as duas abordagens? Prefiro evitar usar um objeto separado para cada formato, porque o objeto é muito grande (centenas de elementos