Нужно отсортировать массив имён пользователей по возрастанию количества их друзей

Нужно отсортировать массив имён пользователей по возрастанию количества их друзей используя при этом методы .sort() и .map().
Как понимаю, ошибка в правильном обращении к массиву friends внутри массива объектов users.

Буду благодарен за помощь!

const users = [{
    name: "Moore Hensley",
    email: "[email protected]",
    eyeColor: "blue",
    friends: ["Sharron Pace"],
    isActive: false,
    balance: 2811,
    gender: "male"
  },
  {
    name: "Sharlene Bush",
    email: "[email protected]",
    eyeColor: "blue",
    friends: ["Briana Decker", "Sharron Pace"],
    isActive: true,
    balance: 3821,
    gender: "female"
  },
  {
    name: "Ross Vazquez",
    email: "[email protected]",
    eyeColor: "green",
    friends: ["Marilyn Mcintosh", "Padilla Garrison", "Naomi Buckner"],
    isActive: false,
    balance: 3793,
    gender: "male"
  },
  {
    name: "Elma Head",
    email: "[email protected]",
    eyeColor: "green",
    friends: ["Goldie Gentry", "Aisha Tran"],
    isActive: true,
    balance: 2278,
    gender: "female"
  },
  {
    name: "Carey Barr",
    email: "[email protected]",
    eyeColor: "blue",
    friends: ["Jordan Sampson", "Eddie Strong", "Adrian Cross"],
    isActive: true,
    balance: 3951,
    gender: "male"
  },
  {
    name: "Blackburn Dotson",
    email: "[email protected]",
    eyeColor: "brown",
    friends: ["Jacklyn Lucas", "Linda Chapman", "Adrian Cross", "Solomon Fokes"],
    isActive: false,
    balance: 1498,
    gender: "male"
  },
  {
    name: "Sheree Anthony",
    email: "[email protected]",
    eyeColor: "brown",
    friends: ["Goldie Gentry", "Briana Decker"],
    isActive: true,
    balance: 2764,
    gender: "female"
  }
]

const getNamesSortedByFriendCount = users => {
  const names = [...users]
    .sort(({
        friends: firstFriend
      }, {
        friends: secondFriend
      }) =>
      firstFriend.length - secondFriend.length)
    .map(({
      friends
    }) => friends);


  return names;
};

console.log(getNamesSortedByFriendCount(users));


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

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

Как вариант

var users =  [
      {
        name: "Moore Hensley",
        email: "[email protected]",
        eyeColor: "blue",
        friends: ["Sharron Pace"],
        isActive: false,
        balance: 2811,
        gender: "male"
      },
      {
        name: "Sharlene Bush",
        email: "[email protected]",
        eyeColor: "blue",
        friends: ["Briana Decker", "Sharron Pace"],
        isActive: true,
        balance: 3821,
        gender: "female"
      },
      {
        name: "Ross Vazquez",
        email: "[email protected]",
        eyeColor: "green",
        friends: ["Marilyn Mcintosh", "Padilla Garrison", "Naomi Buckner"],
        isActive: false,
        balance: 3793,
        gender: "male"
      },
      {
        name: "Elma Head",
        email: "[email protected]",
        eyeColor: "green",
        friends: ["Goldie Gentry", "Aisha Tran"],
        isActive: true,
        balance: 2278,
        gender: "female"
      },
      {
        name: "Carey Barr",
        email: "[email protected]",
        eyeColor: "blue",
        friends: ["Jordan Sampson", "Eddie Strong", "Adrian Cross"],
        isActive: true,
        balance: 3951,
        gender: "male"
      },
      {
        name: "Blackburn Dotson",
        email: "[email protected]",
        eyeColor: "brown",
        friends: ["Jacklyn Lucas", "Linda Chapman", "Adrian Cross", "Solomon Fokes"],
        isActive: false,
        balance: 1498,
        gender: "male"
      },
      {
        name: "Sheree Anthony",
        email: "[email protected]",
        eyeColor: "brown",
        friends: ["Goldie Gentry", "Briana Decker"],
        isActive: true,
        balance: 2764,
        gender: "female"
      }
    ]
function sortUsers(m){
  let res = m.sort(function(a, b) {
    return a.friends.length - b.friends.length;
  }).map(e=>{
    return e.name;
    //return e;
  });
  return res;
}
let res = sortUsers(users)
  console.log(res)

→ Ссылка