0

我有一个包含标签列表和计数的数组。

tags_array[0] = tags;
tags_array[1] = tags_count;

我需要根据计数对数组进行排序,以便挑选出前几个标签。

4

3 回答 3

1

假设tagstags_count是 2 个长度相同的数组,我将首先构建一个适当的对象数组:

var array = [];
for (var i=0; i<tags_count.length; i++) {
    array.push({tag:tags[i], count:tags_count[i]});
}

然后按 count 排序:

array.sort(function(a, b) {return a.count-b.count});

如果您需要在那之后取回您的阵列,您可以这样做

for (var i=0; i<array.length; i++) {
    tags[i] = array[i].tag;
    tags_count[i] = array[i].count;
}

示范

于 2012-10-29T16:01:21.683 回答
1

排序一,同时存储排序比较。然后使用这些结果对另一个进行排序:

var res = [];
tags_count.sort( function( a, b ){ return res.push( a=a-b ), a; } );
tags.sort( function(){ return res.shift(); } );
于 2012-10-29T16:42:39.837 回答
0

假设 tags 和 tags_count 都是长度相同的数组(问题的那部分不太清楚),以下是解决问题的一种方法。

var tags_array = new Array();

for (var i = 0; i < tags.length; i++)
{
    tags_array[i] = {};
    tags_array[i].tagName = tags[i];
    tags_array[i].tagCount = tags_count[i];
}

tags_array.sort(function(a,b){return b.tagCount-a.tagCount});

应该注意的是,可以从一开始就以这种方式构造数据,而不是像这样重写它,在这种情况下这是更可取的。同样,可以使用更好的结构来保存数据,但这会起作用。

于 2012-10-29T16:03:23.427 回答