【发布时间】:2019-06-22 14:25:38
【问题描述】:
如果缺少任何字段,我如何对数组进行排序?
所以现有的数组例如是:
const users = [
{
id: 1, firstname: 'Jerry'
}, {
id: 2, firstname: 'Thomas', lastname: 'Geib'
}, {
id: 3
}, {
id: 4, lastname: 'Berg'
}, {
id: 5, firstname: 'Ass', lastname: 'Noob'
}, {
id: 6, lastname: 'Jopa'
}
]
并且结果应该按这个顺序排序:
- 具有
firstname和lastname的对象 - 对象仅具有
firstname或lastname - 没有
firstname和lastname的对象
所以它看起来像:
const users = [
{
id: 2, firstname: 'Thomas', lastname: 'Geib'
}, {
id: 5, firstname: 'Ass', lastname: 'Noob'
}, {
id: 1, firstname: 'Jerry'
}, {
id: 4, lastname: 'Berg'
}, {
id: 6, lastname: 'Jopa'
}, {
id: 3
}
]
我已经尝试过这种排序,但结果不是我需要的
users.sort((a,b) => {
if (a.firstname === b.firstname) {
return 0
}
if (!a.firstname) {
return 1
}
return -1
});
【问题讨论】:
-
您根据什么对对象进行排序?
-
我猜的姓
-
我认为最少的对象字段值是数组中的最后一个
-
对不起,我真的没有发短信。我编辑了问题
-
@hofshteyn 您的编辑仍然没有说明如果 2 个用户同时拥有
firstname和lastname会发生什么?
标签: javascript arrays sorting object ecmascript-6