Нужно отсортировать массив имён пользователей по возрастанию количества их друзей
Нужно отсортировать массив имён пользователей по возрастанию количества их друзей используя при этом методы .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)