В магистральном приложении у меня есть возможность сортировать коллекцию моделей в порядке возрастания или убывания на основе пары атрибутов, одним из которых является стоимость.
API, который я использую, странным образом возвращает стоимость в виде строки (не уверен, почему я в нее вкладываюсь), но еще более странным является то, что я могу сортировать по стоимости абсолютно нормально, пока стоимость не превысит 100000,00 — и я не могу понять, почему .
Вот код, который выполняет сортировку,
Поэтому я установил компаратор в коллекцию,
comparator: function (item1, item2) {
var val1 = item1.get(this.sort_key);
var val2 = item2.get(this.sort_key);
/***added temporarly to sort save project from modal ****/
if(val2 == undefined){
val2 = val1;
}
/***end added temporarly to sort save project from modal ****/
if (typeof (val1) === "string" ) {
val1 = val1.toLowerCase();
val2 = val2.toString().toLowerCase();
}
var sortValue = val1 > val2 ? 1 : -1;
return sortValue * this.sort_order;
}
а затем я запускаю этот код в коллекции,
this.sort_key = filters.order.by;
this.sort_order = filters.order.type == "desc" ? -1 : 1;
// console.log(this.sort_order);
this.sort();
Допустим, у меня есть значения 10000,00, 20000,00, 30000,00, 40000,00 и 200000,00. Если порядок в порядке возрастания, я получаю следующее:
- 10000.00
- 20000.00
- 200000.00
- 30000.00
- 40000.00
и если я сортирую по убыванию, я получаю следующий результат
- 40000.00
- 30000.00
- 200000.00
- 20000.00
- 10000.00
Почему это происходит, я не могу понять.