计算多维数组

时间:2016-09-06 18:23:47

标签: mysql sorting

我不认为这是重复的,因为它处理的是具有多个记录集的对象,虽然它非常相似,我的需求需要更多的循环。无论哪种方式,我似乎无法让它对我有用。我刚刚在这里学习,这对我来说太复杂了。我需要使用像这样的对象的一些例子。我尝试使用一些类似的问题答案,但由于需要额外的循环水平而总是失败。

我当前的代码输出一个简单的未排序列表:

for (i=0; i<data.length; i++)
    if (data[i]['name'])
        $("#output").append("<p>"+data[i]['entrynum']+data[i]['name']);

我想要的是:

  • J0hn James
  • Fr3d
  • S @ m Wise
  • Fr3d
  • Fr3d
  • S @ m Wise
  • Fr3d
  • 佛瑞德
  • S @ m Wise
  • S @ m Wise
  • 比尔
  • 比尔

输出报告的列表(最好按顺序desc):

  • 5 Fr3d
  • 4 S @ m Wise
  • 3 Frank
  • 2 Bill
  • 1 J0hn James

1 个答案:

答案 0 :(得分:0)

我整晚都学到了很多东西! 这就是我现在所拥有的:

//convert my multidimensional object into a simple list
var clublist = [];
for (i=0; i<data.length; i++)
    if (data[i]['club']) 
        clublist.push(data[i]['club']);

//counting, converted into object with occurrence & count
var counts = {};
clublist.forEach(function(x) { counts[x] = (counts[x] || 0)+1; });

//converted into an array to be sorted
var clubs = [];
for (var temp in counts)
    clubs.push([temp, counts[temp]])

//sorted array, descending
clubs.sort(function(a, b) { return b[1] - a[1] })

//final output to page
for (i=0; i<clubs.length; i++)
    $("#output").append("<p>"+clubs[i][1]+" - "+clubs[i][0]);

然而,这似乎是很多步骤......任何关于使这个更紧凑的想法?