【发布时间】:2015-04-24 09:46:45
【问题描述】:
我有以下结构:
var participant0 = {
name : "",
nickname : "",
number "99999"
} ;
var participant1 = {
name : "bbb",
nickname : "",
} ;
var participant2 = {
name : "",
nickname : "aaa"
} ;
var participant3 = {
name : "ccc",
nickname : ""
} ;
我有一个包含结构实例的数组:
var array = [participant0, participant3, participant1, participant2];
我想按字母排序这个数组。第一个名字,第二个昵称。如果这两个键不存在,我想检查数字键并将这个元素放在排序列表的末尾。
预期结果:
var array = [participant2, participant1, participant3, participant0];
(按“aaa”、“bbb”、“ccc”、“9999”对对象进行排序)
以下代码可以正常按名称或昵称排序,但如果有数字键,我不知道如何将项目放在排序列表的末尾:
fav_list.sort(function(x, y) {
return (x.participant.name || x.participant.nickname).localeCompare(y.participant.name || y.participant.nickname);
});
【问题讨论】:
-
为什么
participant2在结果中应该在participant1之前?真的nickname="aaa" < nickname=""吗? -
比较“2”和“10”时,哪个先出现?
-
@hindmost
nickname="aaa" < name="bbb"。这些排序规则很奇怪吗?是的,他们是,但这正是 OP 想要的。
标签: javascript jquery arrays sorting