Javascript 快速排序时跟踪id的简单方法

Javascript 快速排序时跟踪id的简单方法,javascript,sorting,quicksort,Javascript,Sorting,Quicksort,我有一个点数组,它与我的dataID数组相匹配 points = [[2,3.5], [1,2.7], [5,2.21], [2,351]]; dataID = [1, 2, 3, 4]; 在javaScript中,Im使用的快速排序函数是: (使用我自己的比较函数,通过X然后Y进行比较,并且有效) quicksortbyXthenY:函数(数组){ 如果(array.length=0){ 下压(这个); }否则{ 更大。推(这个); } }); 返回(quicksortb

我有一个点数组,它与我的dataID数组相匹配

     points = [[2,3.5], [1,2.7], [5,2.21], [2,351]];
     dataID = [1, 2, 3, 4];
在javaScript中,Im使用的快速排序函数是: (使用我自己的比较函数,通过X然后Y进行比较,并且有效)

quicksortbyXthenY:函数(数组){
如果(array.length=0){
下压(这个);
}否则{
更大。推(这个);
}
});
返回(quicksortbyXthenY(更低).concat([pivot]).concat(quicksortbyXthenY(更大));
我需要知道点的新顺序,即与点的新顺序正确匹配的数据ID的更新数组

实现这一点最简单的方法是什么

我需要知道点的新顺序,即与点的新顺序正确匹配的数据ID的更新数组

为数组指定ID,然后对其排序,然后从排序后的数组中提取ID:

for (var i=0; i<points.length; i++)
    points[i].dataID = dataIDs[i];
points.sort(compare);
for (var i=0; i<points.length; i++)
    dataIDs[i] = points[i].dataID;

for(var i=0;iWhy您使用两个单独的数组而不是单个对象数组?可能是这样的:
[{id:1,p:[2,3.5]},{id:2,p:[1,2.7]},…]
-或
[{id:1,x:2,y:3.5},…]
。你为什么要自己实现快速排序而不是使用本机的
排序方法呢?你的方法似乎效率要低得多;而且我也不明白
byXthenY
的意思。太好了,这和我所寻找的一样简单
for (var i=0; i<points.length; i++)
    points[i].dataID = dataIDs[i];
points.sort(compare);
for (var i=0; i<points.length; i++)
    dataIDs[i] = points[i].dataID;