【问题标题】:Sorting multidimensional array jquery/javascript对多维数组 jquery/javascript 进行排序
【发布时间】:2012-11-27 23:16:03
【问题描述】:
var klas4 = [];

klas4[2] = [];
klas4[2]["hour"] = 1;
klas4[2]["teacher"] = "JAG";
klas4[2]["group"] = "V4A";
klas4[2]["subject"] = "IN";
klas4[2]["classroom"] = "B111";

klas4[0] = [];
klas4[0]["hour"] = 6;
klas4[0]["teacher"] = "JAG";
klas4[0]["group"] = "V4B";
klas4[0]["subject"] = "IN";
klas4[0]["classroom"] = "B111";

klas4[1] = [];
klas4[1]["hour"] = 4;
klas4[1]["teacher"] = "NAG";
klas4[1]["group"] = "V4A";
klas4[1]["subject"] = "NA";
klas4[1]["classroom"] = "B309";

这个多维数组需要按小时排序,升序。问题是,我不知道如何对多维数组进行排序。第一个维度(0、1 和 2)需要根据小时更改,但维度 2 中的所有其他详细信息(教师、小组等)也需要从索引中更改,否则数据会混合。 你不知道有多少索引。在这个例子中,正确的顺序应该是:klas4[2][...], klas4[1][...], klas[0][...]

在 PHP 中有一个特定的函数 multisort,但我在 jQuery 或 JavaScript 中找不到。

【问题讨论】:

  • klas4[0] = []; 应该是一个对象,而不是一个数组。它应该看起来像 klas4[0] = { "hour" : 6, "teacher" : "JAG", "group" : "V4B", "subject" : "IN", "classroom" : "B111" };
  • 您不正确地使用数组,当您认为您正在添加元素时,您只是在向数组对象添加属性。请参阅this question 了解更多信息。
  • @epascarello 您可以省略键上的引号...

标签: javascript jquery sorting multidimensional-array


【解决方案1】:
klas4.sort( function(a,b){ return a.hour - b.hour } );

应该这样做。

将 klas4 视为一个对象数组而不是多数组会有所帮助。 然后使用排序函数对该数组中的对象进行排序。

排序函数接受 2 个对象,您必须返回先出现的对象。

您应该阅读有关 Array 的 sort() 的内容,谷歌一下。

另外,正如其他人所评论的那样; klas4 的条目实际上是对象,您应该使用

klas4[2] = {};

甚至更好

klas4[2] = { hour:1 , teacher:"JAG" , group:"V4A" , subject: "IN" };

最后,我假设您和我一样是母语为荷兰语或德语的人。我强烈建议用英文命名所有变量,class4,而不是klas4。这是正确、专业的做法。

【讨论】:

    猜你喜欢
    • 2011-10-23
    • 2017-11-09
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 2015-05-12
    相关资源
    最近更新 更多