Como impedir a classificação automática da propriedade numérica do objeto?

Por que encontrei esse problema: tentei resolver um problema de algoritmo e preciso retornar o número que aparecia na maioria das vezes em uma matriz. Como [5,4,3,2,1,1] deve retornar 1. E também quando dois números aparecem ao mesmo tempo que o retorno máximo da aparência, o primeiro vem primeiro. Como [5,5,2,2,1] retorno5 Porque5 apareça primeiro. Eu uso um objeto para armazenar a aparência de cada número. A chave é o próprio número.

Então, quando a entrada é [5,5,2,2,1], meu objeto deve serObject {5: 2, 2: 2, 1: 1} mas na verdade eu tenhoObject {1: 1, 2: 2, 5: 2} Então, quando eu uso for..in para iterar o objeto2 retornou em vez de5 . É por isso que eu fiz essa pergunta.

Esse problema ocorre no console do Chrome e não tenho certeza se esse é um problema comum: Quando executo o seguinte código

var a = {};
a[0]=1;
a[1]=2;
a[2]=3;

a é:Object {0: 1, 1: 2, 2: 3}

Mas quando eu inverto a ordem da tarefa, como:

 var a = {};
 a[2]=3;
 a[1]=2;
 a[0]=1;

a é também:Object {0: 1, 1: 2, 2: 3} A propriedade numérica é classificada automaticamente em ordem crescente. Eu tentei prefixar ou postfix a propriedade numérica como

var a = {};
a['p'+0]=1;
a['p'+1]=2;
a['p'+2]=3;
console.log(a);//Object {p0: 1, p1: 2, p2: 3}

E isso mantém a ordem da propriedade. Essa é a melhor maneira de resolver o problema? E existe alguma maneira de impedir esse comportamento de classificação automática? Isso acontece apenas no mecanismo JavaScript do Chrome V8? Agradeço antecipadamente!

questionAnswers(6)

yourAnswerToTheQuestion