Создать функцию сортировки массива на js

Задача состоит в том, чтобы создать функцию, которая сортирует массив

Так не работает:

var persons = [
    {name: "Иван", age: 17},
    {name: "Мария", age: 35},
    {name: "Алексей", age: 73},
    {name: "Яков", age: 12},
]
console.log(persons);
function sort(array,fieldName){
array.sort((a,b)=>a.fieldName>b.fieldName?1:-1);
}
sort(persons,"age");
console.log(persons);

А так работает

persons.sort((a,b)=>a.age>b.age?1:-1);

Почему в первом варианте не получается?


Ответы (4 шт):

Автор решения: splash58

Вы сортируете по несуществующему полю

вот так будет работать

array.sort((a,b)=>a[fieldName]>b[fieldName]?1:-1);
→ Ссылка
Автор решения: WVFFLIFE

При взятии свойства объекта через точку - a.fieldName, ваша переменная игнорируется и пытается получить доступ к свойству fieldName у объекта a, у которого в свою очередь свойство с таким именем отсутствует. Используйте такой подход a[fieldName]

→ Ссылка
Автор решения: Дядя Вова

var persons = [
    {name: "Иван", age: 17},
    {name: "Мария", age: 35},
    {name: "Алексей", age: 73},
    {name: "Яков", age: 12},
]

console.log(persons);

function sort(array,fieldName){
  array.sort((a,b)=>a[fieldName] > b[fieldName] ? 1 : -1);
}

sort(persons, "age");

console.log(persons);

Подробнее о работе с объектами здесь

→ Ссылка
Автор решения: ALexander

В первом варианте неправильно читается ключ массива, поменяй на вариант с квадратными скобками:

array.sort((a,b)=>a[fieldName]>b[fieldName]?1:-1);
→ Ссылка