У меня есть массив объектов, хранящихся в observableArray
. Каждый элемент массива является объектом date.js.Как обеспечить, чтобы наблюдаемый массив нокаута оставался отсортированным?
{startDate:momentObject, endDate:momentObject, cycle:null}
Мне нужно вычислить две вещи. Одно будет средним временем между startDates. Я думаю, что самый простой способ сделать это - рассчитать продолжительность между ранними и последними startDates в массиве и разделить их на общее количество записей.
Мне также нужен период между 2 startDates. Быстрое решение, которое я придумал что-то вроде этого:
$.each(dateArray, function(index, item){
var previousItem = dateArray[index - 1];
if(previousItem){
// since these are moment objects, just use the diff method
return item.cycle = previousItem.startDate.diff(item.startDate, 'days');
}
return false;
});
Но это потребует observableArray
быть отсортированы в порядке возрастания. Итак, вот мой вопрос (ы).
- Как убедиться, что
observableArray
является силой отсортирован каждый раз я нажимаю новый пункт к нему? - Есть ли лучший способ рассчитать периоды между
startDates
и срединным периодом? - Возможно, я мог бы вычислить период при добавлении элемента в массив вместо цикла?
А, приятное решение с распоряжением/повторной подпиской. Мое решение состояло в том, чтобы иметь флаг в расширителе, чтобы знать, когда не пересобираться. –