排序阵列I具有以下结构:由密钥对象
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'?真的有'昵称=“aaa”<昵称=“”'? – hindmost
比较“2”和“10”哪一个最先? –
@最后'昵称=“aaa”<名称=“bbb”'。这些排序规则很奇怪吗?是的,他们是,但这是OP想要的。 – Regent