我按字母顺序在其中一个属性上对对象数组进行排序。目前我的排序功能是:
var sortFunc = function(a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
};
arr.sort(sortFunc);
但是,我在数组中使用这些对象的索引来显示它们,结果发现这个排序函数正在以一种意想不到的方式重新排列对象。它每次都按字母顺序排序,但是当有多个具有相同名称属性的对象(在sort函数中进行比较的字符串)时,每个排序都会重新排列项目。它们的名称保持不变,但多次运行sort函数会不断重新排序具有相同名称属性值的对象。
示例:
Object A has name "Joe" (index 0)
Object B has name "Bob" (index 1)
Object C has name "Zander" (index 2)
Object D has name "Joe" (index 3)
第一次运行sort函数会产生如下命令:BADC
再次运行它,在新的现在排序的数组上,将产生BADC或BDAC。
当对象的属性相同时,如何防止对象的混乱?