我有以下数组:
var objs = [
{ id: 'X82ns', name: 'james', presence: 'online' },
{ id: '8YSHJ', name: 'mary', presence: 'offline' },
{ id: '7XHSK', name: 'rene', presence: 'online' }
];
Run Code Online (Sandbox Code Playgroud)
我想对数组进行排序,以便它通过'presence'返回一个新数组:'online'用户首先在离线项目之前显示.
所以如果排序,它应该返回这样的东西:
var objs = [
{ id: 'X82ns', name: 'james', presence: 'online' },
{ id: '7XHSK', name: 'rene', presence: 'online' },
{ id: '8YSHJ', name: 'mary', presence: 'offline' }
];
Run Code Online (Sandbox Code Playgroud)
像这样的东西:
const newArray = objs.sort((a, b) => {
if (a.presence === 'online') {
return 1;
} else if (b.presence === 'offline') {
return -1;
} else {
return 0;
}
})
return newArray;
}
Run Code Online (Sandbox Code Playgroud)
获得预期结果的正确方法是什么?
你可以使用localeCompare方法.
var objs = [ { id: 'X82ns', name: 'james', presence: 'online' }, { id: '8YSHJ', name: 'mary', presence: 'offline' }, { id: '7XHSK', name: 'rene', presence: 'online' } ];
objs.sort((a,b) => b.presence.localeCompare(a.presence));
console.log(objs);Run Code Online (Sandbox Code Playgroud)
不要忘记,sort()方法排序数组的元素到位,这样你就不需要使用const newArray = objs.sort....