Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сортировка массива с объектами на javascript (https://javascript.ru/forum/dom-window/76122-sortirovka-massiva-s-obektami-na-javascript.html)

sergiu920 06.12.2018 20:00

Сортировка массива с объектами на javascript
 
Здравствуйте! У меня появилась одна интересная задача. Есть массив объектов. Каждый объект из данного массива представляет из себя описание какой-то ошибки.


Каждый объект имеет такие свойства:

var object1 = { 
 
    'fieldName': 'dec_table_row_r74c1', 
 
    'error_code': parseInt('004', 10), 
 
    'msg' : 'Описание ошибки' 
 
}


'fieldName' - это имя текстового поля, которая вызвала данную ошибку. То есть поле которое не было заполнена правильно.

'error_code' - это код ошибки

'msg' - это описание ошибки

Для общего представления: Есть страница с большой формой, каждое поле из этой формы имеет свои правила заполнения.
Если мы заполнили не правильно несколько полей, то перед отправки формы появляется список ошибок.

Пример списка с ошибками:
Строка 31, колонка 2 - код ошибки: 05-014. Описание ошибки: Вы не заполнили правильно поле
Строка 10, колонка 3 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 20, колонка 3 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 30, колонка 3 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 31, колонка 3 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 20, колонка 4 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 30, колонка 4 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 50, колонка 4 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 31, колонка 2 - код ошибки: 05-024. Описание ошибки: Вы не заполнили правильно поле

Суть задачи: Нужно отсортировать эти ошибки по коду ошибки(я это уже сделал), потом нужно отсортировать по строкам и потом по колонкам. Получается что надо отсортировать этот список таким образом:

Строка 31, колонка 2 - код ошибки: 05-014. Описание ошибки: Вы не заполнили правильно поле

Строка 10, колонка 3 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 20, колонка 3 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 20, колонка 4 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 30, колонка 3 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 30, колонка 4 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 31, колонка 3 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле
Строка 50, колонка 4 - код ошибки: 05-021. Описание ошибки: Вы не заполнили правильно поле

Строка 31, колонка 2 - код ошибки: 05-024. Описание ошибки: Вы не заполнили правильно поле

Я уже отсортировал этот список по коду ошибки, используя функцию sort(), но не знаю как в тоже время отсортировать его по строкам и по колонкам.
Подскажите пожалуйста как можно эту задачу реализовать ?

Вот как я сделал сортировку по коду ошибки:

var object1 = { 
 
            'fieldName': 'dec_table_row_r74c1', 
 
            'error_code': parseInt('004', 10), 
 
            'msg' : 'Error a' 
 
        } 
 
        var object2 = { 
 
            'fieldName': 'dec_table_row_r74c2', 
 
            'error_code': parseInt('024', 10), 
 
            'msg' : 'Error b' 
 
        } 
 
        var object3 = { 
 
            'fieldName': 'dec_table_row_r74c3', 
 
            'error_code': parseInt('021', 10), 
 
            'msg' : 'Error c' 
 
        } 
 
        var object4 = { 
 
            'fieldName': 'dec_table_row_r74c4', 
 
            'error_code': parseInt('016', 10), 
 
            'msg' : 'Error d' 
 
        } 
 
        var arr_objects = [object1, object2, object3, object4]; 
 
        arr_objects.sort(function(a, b){ 
 
            return a.error_code - b.error_code; 
 
        });

рони 06.12.2018 20:15

sergiu920,
return a.error_code - b.error_code || a.строка - b.строка || a.колонка- b.колонка

sergiu920 07.12.2018 08:47

Огромное спасибо!


Часовой пояс GMT +3, время: 13:41.