- 私は配列を持っています。並べます。
- 最初の配列に基づいて既にソートされている 2 番目の配列を取得します。
2 番目の配列の並べ替えを逆にする必要があります。
たとえば、最初の配列 (ソートされていない) が次の場合:[9, 5, 3, 0, 2]
になるようにソートします[0, 2, 3, 5, 9]
。
次に、最初の配列に基づいて並べ替えられた 2 番目の配列を受け取ります["home", "car", "train", "pc", "mouse"]
。になる必要があり["mouse, "pc", "train", "home", "car"]
ます。
配列のコピーを作成できません。
次のコードがあります。
//data_r is an array with values
var i = 0;
var sort_order = new Array();
data_r.sort(function (a,b) {
var res = a[0] - b[0];
sort_order[i] = res;
i++;
return res;
});
最終的に、sort_order
配列にはアイテムを並べ替えたときに実行されたアクションが含まれます。最初の配列とまったく同じ方法で 2 番目の配列を並べ替えたい場合は、次のようにします。
//data_x is an array with values
var i = 0;
data_x.sort(function (a,b) {
i++;
return sort_order[i-1];
});
これで、data_x
配列は配列とまったく同じ方法でソートされdata_r
ます。
配列の並べ替えを元に戻すにはどうすればよいdata_r
ですか?
次のコードは正しくありません。
var unsort = new Array();
for(var i = 0; i < data_r.length; i++)
unsort[i] = sort_order[i]*(-1);//-1 so we perfom the oposite action