2015-11-14 3 views
0

Я хочу, чтобы отсортировать массив objects.I есть даты в моем объекте я хочу отсортировать даты объектовКак отсортировать объект даты в массиве?

я использовал этот ответ, чтобы решить мою проблему why array is not sorted in javascript in increasing date or decreasing date?

Но при использовании этого решения она не работает ,

Я делаю вызов ajax и получаю данные из хранилища сервера в массиве. Но данные , поэтому сложно проверить, сортируются данные или нет.

Поэтому я дам вам доказательства того, что данные не сортируются.

  • Показать объект значение чт 24 июля 2014
  • Показать объект Значение является пн 28 июля 2014
  • Показать объект значение пн 20 апреля 2015
  • Просмотреть объект значение Ср Дек 18 2013

https://jsfiddle.net/rxaLutgn/6/

function sort_by(field, reverse, primer) { 

      var key = primer ? 
       function (x) { 
        return primer(x[field]) 
       } : 
       function (x) { 
        return x[field] 
       }; 

      reverse = !reverse ? 1 : -1; 

      return function (a, b) { 
       a = new Date(key(a)), b = new Date(key(b)); 
       return reverse * (a-b); 
      } 
     } 

любое изменение относительно этого question.Below ответа не работает

ответ

0

Функция прекрасно работает, если вы ждете все даты. Глядя на ваши данные, есть некоторые недопустимые даты, такие как «-»

Если вы не можете изменять данные или ожидать определенную дату, тогда вам нужно изменить свою функцию, чтобы сделать что-то подобное (или обработать ее каким-то образом по своему вкусу)

function sort_by(field, reverse, primer) { 

     var key = primer ? 
      function (x) { 
       return primer(x[field]) 
      } : 
      function (x) { 
       return x[field] 
      }; 

     reverse = !reverse ? 1 : -1; 

     return function (a, b) { 
      a = new Date(key(a))=='Invalid Date'?0:new Date(key(a)); 
b = new Date(key(b))=='Invalid Date'?0:new Date(key(b)); 
      return reverse * (a-b); 
     } 
    } 

< https://jsfiddle.net/rxaLutgn/21/ - посмотрите здесь в пробку на объектах, которые плохо отсортированных, чтобы ограничить объем данных

+0

это не работает, пожалуйста, проверьте https://jsfiddle.net/rxaLutgn/12/ – user944513

+0

просьба представить любую скрипку – user944513

+0

@ user944513 если ваша скрипка фиксируется, чтобы добавить обратно в ключ [ '(а)' и 'key (b)'] (https://jsfiddle.net/rxaLutgn/20/) вызывает его работу. – binki

0

Вот рабочее решение, я не включал грунтовку как вы. Но реализовать его должно быть легко.

$.ajax({ 
url: "https://dl.dropboxusercontent.com/s/3v7ya481187k8gf/a.json?dl=0", 
}).done(function(data) { 
    var arr; 
    var _key = "Expected_Payment_Date__c";//"akritiv__Promise_Date__c", 
    var _reverse = true; 
    arr=JSON.parse(data); 
    arr.sort(function(a,b){ 
     var keyA = Date.parse(a[_key]); 
     var keyB = Date.parse(b[_key]); 
     var _rev = _reverse ? -1 : 1; 

     if(keyA < keyB) return _rev * -1; 
     if(keyA > keyB) return _rev * 1; 
     return 0; 
    }); 
    console.log(arr); 
}); 
Смежные вопросы