我想知道Javascript排序函数对相同项目的作用(例如,排序的是相同项目的顺序是什么?)
示例:如果我有一个对象数组,每个对象都具有以下结构
{
name:string,
type:string
}
我想使用sort函数对上面的数组进行排序,使列表为:
示例:
排序前:
[{name:"John", type:"type3"},{name:"Tim", type:"type2"},{name:"Buck", type: "type2"},{name:"Emma", type:"type2"}]
排序后:
[{name:"Buck", type:"type2"},{name:"Emma", type:"type2"},{name:"Tim", type:"type2"},{name:"John", type:"type3"}]
我提出的似乎工作的解决方案(基于特定结果)是:
这意味着排序函数似乎以保持相等项目的原始顺序(例如,第二种排序使项目与原始顺序中的“type2”相同,这是顺序按名称排序的列表)
但我无法找到支持我的理论的文件。
我的问题是:对于所有情况和不同浏览器,此行为(sort函数是否保留相等项的原始顺序)是真的吗?
我很感激任何证实这种行为的文件。
答案 0 :(得分:2)
要按两个键排序,您只需要通过uiautomatorviewer
一次。在比较功能中,您只需要在主键相同时比较辅助键:
.sort()
如果类型的比较(通过yourArray.sort(function(o1, o2) {
var c = o1.type.localeCompare(o2.type);
if (c) return c;
return o1.name.localeCompare(o2.name);
});
)返回1或-1,则返回该值以用于对对象进行排序。如果类型相同,则比较将移至名称。