2015-03-10 4 views
-3
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' } 
} 

// data sorting 
console.info(data); 

Я хочу сортировки данных по «_id»как сделать объект JSon Сортировка в node.js

, как это сделать?

+0

Вы хотите рассчитать данные в переменной или отсортировать данные уже зарегистрированы в базе данных? –

+0

_id mongodb objectid, это временная метка. Я хочу его отсортировать. в node.js – Tedy

+1

ну, у вас нет массива здесь, у вас есть объект, который содержит ряд других объектов. вам придется либо преобразовать в массив объектов, либо отсортировать массив, либо написать собственный алгоритм сортировки. – Claies

ответ

0

Вот как я сделал бы это в своем личном коде. Возможно, вам придется перезаписать функции =>, если вы еще не используете Экмаскрипт 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 
} 
+0

'' ' const sorted = Object.keys (data) .reduce ((accum, key) => { accum.push (data [key]); возвращение Accum; }, []) сортировки ((а, Ь) => { возвращение сравнить (a._id, b._id). }) '' ' Я не понимаю, этот код , '' ' – Tedy

+0

@Seung обновил его, чтобы быть более читаемым, и добавил встроенные комментарии. –

Смежные вопросы