Я пытаюсь сортировать массив хэш на основе нескольких ключей и нескольких направлений (ASC и DESC).Как отсортировать Ruby Array of Hashes на основе нескольких ключей и нескольких направлений?
Предположим, массив выглядит следующим образом:
items = [ {field1: '1', field2: 5, field3: 5},
{field1: '1', field2: 1, field3: 3},
{field1: '3', field2: 3, field3: 2},
{field1: '3', field2: 1, field3: 8},
{field1: '7', field2: 5, field3: 6},
{field1: '7', field2: 5, field3: 1} ]
Я хочу создать multiple_sort (элементы, варианты) метод, который работает, как:
multiple_sort(items, [{field: 'feed1', dir: 'asc'}, {field: 'feed3', dir: 'asc'}])
будет генерировать:
[ {field1: '1', field2: 1, field3: 3},
{field1: '1', field2: 5, field3: 5},
{field1: '3', field2: 3, field3: 2},
{field1: '3', field2: 1, field3: 8},
{field1: '7', field2: 5, field3: 1},
{field1: '7', field2: 5, field3: 6} ]
И
multiple_sort(items, [{field: 'feed1', dir: 'asc'}, {field: 'feed3', dir: 'desc'}])
Выведет:
[ {field1: '1', field2: 5, field3: 5},
{field1: '1', field2: 1, field3: 3}
{field1: '3', field2: 1, field3: 8},
{field1: '3', field2: 3, field3: 2},
{field1: '7', field2: 5, field3: 6},
{field1: '7', field2: 5, field3: 1} ]
Любая помощь будет оценена.