在《JavaScript语言精粹》一书中,作者在第81页提到了“稳定”的概念。链接至Google图书
然而,我发现书中给出的例子与排序是否稳定无关。维基百科
我有什么遗漏吗?
因此,书中的例子如下:
因此,书中的例子如下:
但是这个例子并没有证明排序是否稳定。如果先按照名字排序,再按照姓氏排序,那么按照名字排序的部分将被覆盖。结果如下:
var s = [ {first: 'Joe', last: 'Besser'}, {first: 'Moe', last: 'Howard'}, {first: 'Joe', last: 'DeRita'}, {first: 'Shemp', last: 'Howard'}, {first: 'Larry', last: 'Fine'}, {first: 'Curly', last: 'Howard'} ];
The sort method is not stable, so:
s.sort(by('first')).sort(by('last'));
is not guaranteed to produce the correct sequence.
[ { first: 'Joe', last: 'Besser' },
{ first: 'Joe', last: 'DeRita' },
{ first: 'Larry', last: 'Fine' },
{ first: 'Curly', last: 'Howard' },
{ first: 'Moe', last: 'Howard' },
{ first: 'Shemp', last: 'Howard' } ]
我知道JS的排序不保证稳定。这里和这里。但我认为这本书没有正确地处理这个话题。我的问题是,我不知道我的理解是否正确。如果我错了,我想知道为什么。
sort(by('first'))
,Howard 应该改变顺序。 - user2357112