У меня есть массив Javascript так:Использование lodash для сортировки массива объектов на число с плавающей точкой
var list = [{Name: 'X', Value: 140.000},
{Name: 'Y', Value: 200.000},
{Name: 'Z', Value: 50.000}]
(он имеет гораздо больше свойств, но были опущены для краткости).
Я создал функцию, которая сортирует этот список, используя имя свойства, переданного в функцию. Я сделал это легко с lodash, но если я сортирую значение Value, значения, похоже, обрабатываются строками и неправильно сортируются.
Это моя-то функция (пока)
function sortByField(fieldName)
{
list = _.sortBy(list, fieldName);
//afterwards I call reverse() if the sortDirection is descending, but I omitted this part for brevity
}
После сортировки по стоимости я получаю следующий массив:
var list = [{Name: 'X', Value: 140.000},
{Name: 'Y', Value: 200.000},
{Name: 'Z', Value: 50.000}]
Вы можете видеть, что обработал значение как строки, даже если они являются десятичными числами. «З-объект должен был быть первым. Как я могу это решить?
Я искал документацию lodash, но не мог найти ничего, связанного с этой проблемой. Любая помощь, пожалуйста? Это будет очень признательно.
EDIT: Я просто понял, что свойство Value заполнено через веб-страницу (элемент управления вводом), поэтому Javascript фактически добавляет его в массив как строку, что, вероятно, вызывает проблему. Могу ли я каким-то образом применить это к поплавке? Или мне нужно прибегнуть к встроенной функции сортировки Javascript и создать собственный Сравнить?
Просто используйте равнину встроенный в JavaScript '.sort()' с обратного вызова, чтобы вернуть разницу между этими двумя свойствами «Значение». – Pointy
Почему позиции после десятичной точки? –
О, это тысяча-сеператор, а не десятичная точка в примере. В моей стране "." является тысячным seperator :-) –