对20个变量列表进行排序,然后选择前五个变量

时间:2012-04-18 18:17:50

标签: javascript arrays

所以这就是我的困境,我已经做了几天的研究,试图找出解决方法。

问题:我的函数用js读取xml文件的行,然后将某些行(a1,a2,a3等)存储到变量/数组。然后我需要按值对它们进行排序,并选择前五个最大的数字并使用它们的ID从xml文件中选择其他信息。

例如,我有a1,a4,a5,a6和a2是此文件的最大行(值从文件更改为文件)。然后,我需要选择那些变量,从10行中获取具有相似名称的数据,并对它们执行数学等式(新行与第一行相同,但末尾有“a”或“b”)

我的理论解决方案:将xml中的行读入数组,并将相应的行读入另外两个数组。然后,当我对第一个数组进行排序时,我可以获取前五个数组的单元名称,并使用它来定义我使用其他两个数组的数组单元来完成我的等式。

这是我的三个阵列。

indSort[0] = Number($(this).find("n0").text());
indSort[1] = Number($(this).find("n1").text());
indSort[2] = Number($(this).find("n2").text());
indSort[3] = Number($(this).find("n3").text());
indSort[4] = Number($(this).find("n4").text());
indSort[5] = Number($(this).find("n5").text());
indSort[6] = Number($(this).find("n6").text());
indSort[7] = Number($(this).find("n7").text());
indSort[8] = Number($(this).find("n8").text());
indSort[9] = Number($(this).find("n9").text());
indSort[10] = Number($(this).find("n10").text());
indSort[11] = Number($(this).find("n11").text());
indSort[12] = Number($(this).find("n12").text());
indSort[13] = Number($(this).find("n13").text());
indSort[14] = Number($(this).find("n14").text());
indSort[15] = Number($(this).find("n15").text());
indSort[16] = Number($(this).find("n16").text());
indSort[17] = Number($(this).find("n17").text());
indSort[18] = Number($(this).find("n18").text());
indSort[19] = Number($(this).find("n19").text());
indSort[20] = Number($(this).find("n20").text());

indSorta[0] = Number($(this).find("n0a").text());
indSorta[1] = Number($(this).find("n1a").text());
indSorta[2] = Number($(this).find("n2a").text());
indSorta[3] = Number($(this).find("n3a").text());
indSorta[4] = Number($(this).find("n4a").text());
indSorta[5] = Number($(this).find("n5a").text());
indSorta[6] = Number($(this).find("n6a").text());
indSorta[7] = Number($(this).find("n7a").text());
indSorta[8] = Number($(this).find("n8a").text());
indSorta[9] = Number($(this).find("n9a").text());
indSorta[10] = Number($(this).find("n10a").text());
indSorta[11] = Number($(this).find("n11a").text());
indSorta[12] = Number($(this).find("n12a").text());
indSorta[13] = Number($(this).find("n13a").text());
indSorta[14] = Number($(this).find("n14a").text());
indSorta[15] = Number($(this).find("n15a").text());
indSorta[16] = Number($(this).find("n16a").text());
indSorta[17] = Number($(this).find("n17a").text());
indSorta[18] = Number($(this).find("n18a").text());
indSorta[19] = Number($(this).find("n19a").text());
indSorta[20] = Number($(this).find("n20a").text());

indSortb[0] = Number($(this).find("n0b").text());
indSortb[1] = Number($(this).find("n1b").text());
indSortb[2] = Number($(this).find("n2b").text());
indSortb[3] = Number($(this).find("n3b").text());
indSortb[4] = Number($(this).find("n4b").text());
indSortb[5] = Number($(this).find("n5b").text());
indSortb[6] = Number($(this).find("n6b").text());
indSortb[7] = Number($(this).find("n7b").text());
indSortb[8] = Number($(this).find("n8b").text());
indSortb[9] = Number($(this).find("n9b").text());
indSortb[10] = Number($(this).find("n10b").text());
indSortb[11] = Number($(this).find("n11b").text());
indSortb[12] = Number($(this).find("n12b").text());
indSortb[13] = Number($(this).find("n13b").text());
indSortb[14] = Number($(this).find("n14b").text());
indSortb[15] = Number($(this).find("n15b").text());
indSortb[16] = Number($(this).find("n16b").text());
indSortb[17] = Number($(this).find("n17b").text());
indSortb[18] = Number($(this).find("n18b").text());
indSortb[19] = Number($(this).find("n19b").text());
indSortb[20] = Number($(this).find("n20b").text());

任何帮助都会超级棒!!!!

编辑:我也愿意以不同的方式做事。例子真的会有所帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用custom compare function作为.sort(),您可以在其中比较行的某些值。然后使用:

array.sort(customCompare).slice(0, 5);

答案 1 :(得分:0)

对元素进行排序的优雅方式:

$(this).find("*").sort(function(a, b){
  return +b.innerHTML-a.innerHTML;
})

您可以使用slice()获取前5个元素