0

我有一个看起来像这样的数组:

markerArray[i] = [i, title, cat];

此数组在添加内容动态的 for 循环内

所以结果可能是这样的:

markerArray[0] = [0, A title, A];
markerArray[1] = [1, A title new, B];
markerArray[3] = [3, A title, E];
markerArray[4] = [4, A title, A];

所以我的问题是我如何或是否可以对数组进行排序,以便输出基于 A、BC 等或标题或从数组内部获取的任何内容,请注意最后一个(类别)按字母顺序排列现在:

    markerArray[0] = [0, A title, A];
    markerArray[1] = [4, A title, A];
    markerArray[2] = [1, A title new, B];
    markerArray[3] = [3, A title, E];

这甚至可能吗?

4

5 回答 5

2

尝试 -

var markerArray = new Array();
markerArray[0] = [0, "A title", "A"];
markerArray[1] = [1, "A title new", "B"];
markerArray[3] = [3, "A title", "E"];
markerArray[4] = [4, "A title", "Z"];
markerArray[5] = [5, "A title", "A"];


markerArray.sort(function(a, b) {
   var comp1 = a[2];
   var comp2 = b[2];
   return (comp1 < comp2) ? -1 : (comp1 > comp2) ? 1 : 0;
})

alert(markerArray);
于 2011-09-29T10:13:46.607 回答
1

您必须使用Array 对象中可用的sort函数。此函数/方法接受自定义用户函数来确定元素必须如何排序。

function customSorter( a, b )
{
    var comp1 = a[2];
    var comp2 = b[2];
    return (comp1 < comp2) ? -1 : (comp1 > comp2) ? 1 : 0;
}
var markerArray = new Array();
markerArray[0] = [0, "A title", "A"];
markerArray[1] = [1, "A title new", "B"];
markerArray[3] = [3, "A title", "E"];
markerArray[4] = [4, "A title", "Z"];
markerArray[5] = [5, "A title", "A"];

markerArray.sort( customSorter );

有用信息:https ://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort

于 2011-09-29T10:09:23.567 回答
0

使用自定义排序功能。阅读文档如何做到这一点。

于 2011-09-29T10:07:13.250 回答
0

您可以将 compare 函数作为参数传递给 Array.sort 方法,并在 compare 函数中编写比较逻辑。见这里https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort

于 2011-09-29T10:07:52.030 回答
0

你可以试试这种东西:

   markerArray.sort(function(a,b){ 
      for (i = 0; i <= 3 ; i++) {
         if (a[i] <> b[i]) {
            if (a[i] < b[i]) return -1;
            if (a[i] > b[i]) return 1;
         }
      }
      return 0;
   });

这将尝试使用第一个元素进行排序,如果它们相同,则尝试使用第二个元素进行排序,依此类推。

[编辑] 添加一些有趣的链接(也请参阅其他答案):

于 2011-09-29T10:11:49.213 回答