Я создал функцию util для сортировки массива объектов в порядке возрастания или убывания, который принимает свойство. Кажется, он отлично работает для сортировки чисел c, но не для свойств строк. Например, ниже, если вы передаете «age» в качестве второго аргумента, он упорядочивается правильно, однако, если вы передаете «job» в качестве второго аргумента, ничего не происходит. Я надеялся, что он будет упорядочен в алфавитном порядке по работе (инженер, маркетинг, продажи). Есть идеи как это исправить / почему это происходит?
const arrayOfObjects = [
{ firstName: 'Joe', job: 'Engineer', age: 22 },
{ firstName: 'Sam', job: 'Sales', age: 30 },
{ firstName: 'Claire', job: 'Engineer', age: 40 },
{ firstName: 'John', job: 'Marketing', age: 29 },
{ firstName: 'Susan', job: 'Engineer', age: 21 },
];
const orderByValue = (array, orderByItem, order) => array.sort((a, b) => {
if (order === 'descending') {
return b[orderByItem] - a[orderByItem];
} else {
return a[orderByItem] - b[orderByItem];
}
});
// console.log('order by age:', orderByValue(arrayOfObjects, 'age'));
console.log('order by job:', orderByValue(arrayOfObjects, 'job'));