Создать функцию сортировки массива на 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);