- 我有一个数组。我整理一下。
- 我得到了第二个数组,它已经根据第一个数组进行了排序。
我需要反转第二个数组的排序。
例如,如果第一个数组(未排序)是:[9, 5, 3, 0, 2]
那么我想对其进行排序,使其变为[0, 2, 3, 5, 9]
.
然后我收到基于第一个排序的第二个数组,例如["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
数组将包含我们对项目进行排序时执行的操作。如果我想以与第一个数组完全相同的方式对第二个数组进行排序,那么我可以执行以下操作:
//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