Я начал с этим вопрос: How to sort a JS object of objects?Как настроить собственный 2D-объект javascript?
От 2 комментариев я придумал мой лучший способ сортировки объект Javascript объектов (только 2D объекта).
Предполагая, что data
является двумерной переменной объекта, я сортирую значение customer
внутреннего объекта.
Сначала я преобразовать в массив объектов, например:
data = $.map(data, function(k, v) {
return [k];
});
Тогда я сортировочный так:
data = data.sort(function(a, b){
return a.customer > b.customer? 1: -1;
});
Он работает хорошо, но теперь я хочу, чтобы сортировать по переменную даты, затем вторую по переменной клиента. Точно так же, как функции сортировки работают в SQL (...sort by date desc, customer asc;
).
Но, действительно, то, что я хочу сделать, на самом деле намного проще. При сортировке значений даты все, что я хочу сделать, это различие между значениями null
и !null
. Результатом будет то, что все нулевые значения будут сгруппированы вместе и все непустые значения вместе.
После этого все объекты верхнего уровня должны быть в порядке customer
.
я придумал эту идею, основываясь на том, как я думаю, что это должно работать:
data = data.sort(function(a, b){
if (a.fin_date !== null){
return 1;
}
return a.customer > b.customer? 1: -1;
});
Это добрейшей работы. Он сортирует все значения null
в начале, и все нулевые значения находятся в правильном алфавитном порядке, но все остальные значения fin_date
(!null1
) не указаны в алфавитном порядке. Они не в порядке согласно fin_date
. Объекты с fin_date
не равны null
, похоже, не в каком-либо определенном порядке.
Это моя проблема: мне нужны объекты с fin-date
! = null
быть в алфавитном порядке.
Спасибо!
Я предполагаю, что вы имеете в виду, что вы сортируете * массив * объектов, не так ли? Свойства объекта не сохраняются в любом порядке. –
Да, вы правы, я обновил свой код выше. –