【问题标题】:javascript sorting array of objects by datejavascript 按日期对对象数组进行排序
【发布时间】:2012-03-21 15:45:53
【问题描述】:

我有一个接收对象数组的函数,我需要按天对数组进行排序;它看起来像这样:

function Myfunction (TheDays) {

  var TheDaysToSort = $.extend(false, TheDays);

  function SortOrder (a, b) {
     var Day1 = a['TheDate'];
     var Day2 = b['TheDate'];
     return Day1 - Day2;
  };

  TheDaysToSort.sort(SortOrder);
}

我收到一个错误Uncaught TypeError: Object #<Object> has no method 'sort'

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您可以在数组上使用.sort()。你不能 .sort() 一个对象,因为对象的属性没有顺序,因此没有 .sort() 方法。

    如果TheDays 是一个数组,那么不清楚您要对$.extend(false, TheDays); 行代码做什么。如果您可以解释应该做什么,我们可能会帮助您解决应该做什么,以便 TheDaysToSort 是您排序的数组。

    例如,如果您只想复制TheDays,那么我建议您使用此行而不是.extend() 行:

    var TheDaysToSort = TheDays.slice(0);  // make copy of array for sorting
    

    【讨论】:

    • 不 var TheDaysToSort = $.extend(false, TheDays);创建一个新数组?我不想修改作为参数传入的数组的顺序。会写 var TheDaysToSort = TheDays;创建参考或副本?
    • 好的,很酷,我不知道 .slice(0);现在它工作正常。谢谢。
    • @frenchie - 没有。 $.extend(false, TheDays); 不生成数组。有关制作副本的方法,请参阅我编辑的答案。
    【解决方案2】:

    你应该使用:

     var TheDaysToSort = $.extend([], TheDays);
    

    那么TheDaysToSort将是正确的数组,将被成功排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 2016-11-05
      • 2011-10-30
      • 2015-02-25
      相关资源
      最近更新 更多