Lodash сортировать / упорядочивать массив по свойствам - PullRequest
0 голосов
/ 17 мая 2018

У меня есть следующий массив объектов:

var tasks = [
   { importance: 'moderate', task: 'do laundry' },
   { importance: 'critical', task: 'brush teeth' },
   { importance: 'important', task: 'buy milk' },
   { importance: 'unimportant', task: 'wash car' },
];

Как я могу использовать функции сортировки или порядка lodash, чтобы упорядочить мой массив по уровню важности?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вы можете сделать это без lodash:

var tasks = [
   { importance: 'moderate', task: 'do laundry' },
   { importance: 'critical', task: 'brush teeth' },
   { importance: 'important', task: 'buy milk' },
   { importance: 'unimportant', task: 'wash car' },
];

var priorityIndex = {unimportant: 1, moderate: 2, important: 3, critical: 4};

tasks.sort((a, b) =>  priorityIndex[a.importance] - priorityIndex[b.importance]);

console.log(tasks);
0 голосов
/ 17 мая 2018

Прежде всего, измените значение importance на что-то сортируемое (например, целые числа):

const critical    = 1;
const important   = 2;
const moderate    = 3;
const unimportant = 4;

var tasks = [
   { importance: moderate,    task: 'do laundry' },
   { importance: critical,    task: 'brush teeth' },
   { importance: important,   task: 'buy milk' },
   { importance: unimportant, task: 'wash car' },
];`

, а затем сделайте что-то вроде:

_.orderBy(tasks, ['importance'], ['asc']);

...