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

Preserve insert order of object array after sort in Javascript

本文关键字:插入 顺序 数组排序 对象 Javascript 保留      更新时间:2023-09-26

我有一个像下面这样的对象数组:

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

但是当我实现经典排序算法(冒泡或快速排序)时,我得到数组有序,但相似值(TypeID)的插入顺序在不同的位置。

我试着在第一时间订购类似类型的对象,但与其余的迷失了。

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

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

  2. 添加一个辅助键,该辅助键是原始排序序号,并使用查找关联的辅助排序算法