0

タグとカウントのリストを含む配列があります。

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

上位のいくつかのタグを選択できるように、カウントに基づいて配列を並べ替える必要があります。

4

3 に答える 3

1

並べ替えの比較を保存しながら、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 に答える
1

tagstags_countが同じ長さの 2 つの配列であると仮定すると、最初にオブジェクトの適切な配列を作成します。

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

次に、カウントでソートします。

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 に答える
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 に答える