Вот как я сделал бы это в своем личном коде. Возможно, вам придется перезаписать функции =>
, если вы еще не используете Экмаскрипт 6.
Я не предоставлял функцию сравнения, но вы могли бы сгибать ее вместе, используя [a, b] .sort(); если вам нужна максимальная сумма.
var data = { '0':
{
benchmark: null,
hint: '',
_id: '54fe44dadf0632654a000fbd',
date: '2015-05-10T01:11:54.479Z' },
'1':
{
benchmark: null,
hint: '',
_id: '54fe44d9df0632654a000fac',
date: '2015-05-10T01:11:53.608Z' },
'2':
{
body: '{}',
benchmark: null,
_id: '54fe44d8df0632654a000fa4',
date: '2015-05-10T01:11:52.934Z' }
}
// use functional chaining to create a sorted out of the data
// 1. Object.keys(data) returns an array of the keys in `data`, ie ['0', '1', '2']
// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
const sorted = Object.keys(data).map((key) => {
// 2. transform each key to be that value instead.
// '1' becomes { benchmark: null, ...}, so now we have an array of values
// the end result of map() is [ { benchmark: null, ... }, ... ]
// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
return data[key];
}, []).sort((a, b) => {
// 3. sort the resulting values array using Array.prototype.sort, which allows
// you to provide your own comparison callback to determine order.
return compare(a._id, b._id);
})
function compare(a, b) {
// your string ordering code here.
// feel free to use Array.sort() here to do unicode codepoint order sort.
// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
}
Вы хотите рассчитать данные в переменной или отсортировать данные уже зарегистрированы в базе данных? –
_id mongodb objectid, это временная метка. Я хочу его отсортировать. в node.js – Tedy
ну, у вас нет массива здесь, у вас есть объект, который содержит ряд других объектов. вам придется либо преобразовать в массив объектов, либо отсортировать массив, либо написать собственный алгоритм сортировки. – Claies