在Javascript中排序后保留对象数组的插入顺序

时间:2013-05-10 03:39:08

标签: javascript sorting quicksort

我有一系列对象,如下所示:

var a = {
 "TypeID" : 15,
 "Attr1" : "Something"
};

var b = {
 "TypeID" : 17,
 "Attr1" : "Something"
};

var c = {
 "TypeID" : 15,
 "Attr1" : "Something"
};

var d = {
 "TypeID" : 15,
 "Attr1" : "Something"
};

var e = {
 "TypeID" : 1,
 "Attr1" : "Something"
};

var objectArray = new Array();
objectArray.push(a);
objectArray.push(b);
objectArray.push(c);
objectArray.push(d); 

我尝试使用TypeID作为订单值对数组进行排序,但是我需要保留订单插入。我的意思是,最终的订单必须如下:

e,a,c,d,b

但是当我实现经典的排序算法(Bubble或Quicksort)时,我得到了有序的数组,但是类似值(TypeID)的插入顺序是不同的。

我试图在第一时间订购相似类型的物品,但其余部分却迷失了。

1 个答案:

答案 0 :(得分:0)

如果您要问的是如何实现一个排序函数来保留具有相同排序键的对象的初始顺序,那么我知道的唯一方法是:

  1. 使用保证保留原始关系顺序的排序算法

  2. 添加原始排序序号的辅助密钥,并使用排序算法查看关联的辅助排序键。