Filtrowanie tablicy obiektów

0

Mama tablicę:

const users = [
{
    name: "Sharlene Bush",
    email: "[email protected]",
    eyeColor: "blue",
    friends: ["Briana Decker", "Sharron Pace"],
    isActive: true,
    balance: 3821,
    gender: "female",
    age: 34
  },
  {
    name: "Elma Head",
    email: "[email protected]",
    eyeColor: "green",
    friends: ["Goldie Gentry", "Aisha Tran"],
    isActive: true,
    balance: 2278,
    gender: "female",
    age: 21
  },
]

potrzebuję napisać funkcję która zwracałaby tablicę użytkowników, którzy mają przyjaciela o imieniu z parametru friendName. (musi być użyta metoda filter()

mama już coś takiego:

const getUsersWithFriend = (users, friendName) => {
  
  return users.filter(user => user.friends === friendName); 
};

wiem że .friends jest tablicą i pewnie dlatego nie działa, ale nie wiem jak to ugryźć

3

Musisz wewnątrz metody filter zrobić jeszcze jedną pętle po właściwości friends, żeby sprawdzić, czy jest odpowiednie imię

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

const getUsersWithFriend = (users, friendName) => {
  return users.filter((user) => user.friends.some((name) => name === friendName));
}

console.dir(
  getUsersWithFriend(users, 'Sharron Pace')
);
2
Xarviel napisał(a):

Musisz wewnątrz metody filter zrobić jeszcze jedną pętle po właściwości friends, żeby sprawdzić, czy jest odpowiednie imię

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

const getUsersWithFriend = (users, friendName) => {
  return users.filter((user) => user.friends.some((name) => name === friendName));
}

console.dir(
  getUsersWithFriend(users, 'Sharron Pace')
);

Ja bym to zrobił inaczej - użył includes().

const getUsersWithFriend = (users, friendName) => {
  return users.filter(user => user.friends.includes(friendName)); 
};
4

W javascripcie się dziwnie obiekty iteruje, chyba wypadało by go nauczyć tego, bo iterowanie tablic jest łatwiejsze, jak chcesz żebym ci wytłumaczył daj plusa bo mnie nikt nie plusuje, a wyjaśnie ci to.

1 użytkowników online, w tym zalogowanych: 0, gości: 1