показать порядок результатов в угловом контроллере так же, как он был отправлен из пружинного контроллера

Я возвращаю карту из контроллера java spring в контроллер angularjs. Карта в java-контроллере содержит следующие ключи в порядке 11,12,14,15,18,22,25,27,34,29, сопоставленные со значением, которое я отправляю в js-контроллер. Проблема в том, что когда я повторяю и показываю ответ на веб-странице, он показывает результат в отсортированном виде, например 11,12,14,15,18,22,25,27,29,34. Как предотвратить это и показать в порядке, который я отправил с java-контроллера (i.e.,11,12,14,15,18,22,25,27,34,29) (обратите внимание, что разница в последних двух значениях 34,29)

js-код:

angular.forEach($scope.myResponse, function (value, key) {
    //here the results i get are in the order 11,12,14,15,18,22,25,27,29,34.
    //how to show the results as it was sent from java spring controller 11,12,14,15,18,22,25,27,34,29
});

person user3684675    schedule 16.02.2018    source источник
comment
Можете ли вы проверить и подтвердить на вкладке сети инструментов разработчика, получаете ли вы его в нужном вам порядке?   -  person G_S    schedule 16.02.2018
comment
Крайне маловероятно, что Angular выполняет какую-либо сортировку от вашего имени без вашего молчаливого разрешения. Какой тип карты вы получаете обратно - HashMap? TreeMap?   -  person Makoto    schedule 16.02.2018
comment
Это LinkedHashMap@Makoto   -  person user3684675    schedule 16.02.2018


Ответы (1)


Chrome сортирует имена свойств, если они могут быть проанализированы как целые числа.

Из документов:

Неправильный порядок взаимодействия свойств объекта

ECMA-262 не определяет порядок перечисления. Стандарт де-факто должен соответствовать порядку вставки, что также делает V8, но с одним исключением:

V8 не дает никаких гарантий в отношении порядка перечисления индексов массива (т. е. имени свойства, которое может быть проанализировано как 32-разрядное целое число без знака).

Запоминание порядка вставки индексов массива потребовало бы значительных затрат памяти.

 – проблема Chromium № 164

Чтобы гарантировать порядок, отправьте данные в виде массива пар ключ/значение.

Смотрите также:

person georgeawg    schedule 16.02.2018