按字母顺序排序,无需重新排列重复项

时间:2014-05-18 18:19:18

标签: javascript arrays sorting

我按字母顺序在其中一个属性上对对象数组进行排序。目前我的排序功能是:

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。

当对象的属性相同时,如何防止对象的混乱?

0 个答案:

没有答案