如何按数组字段值javascript对数组进行排序

Eri*_*cky 2 javascript

我有以下数组:

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)

获得预期结果的正确方法是什么?

Mih*_*nut 6

你可以使用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....