Filtrowanie tablicy i metoda reduce()

Filtrowanie tablicy i metoda reduce()
89
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

mamy tablicę:

Kopiuj
users =[ {
    name: "Elma Head"
    balance: 2278,
    gender: "female"
  },
  {
    name: "Carey Barr",
    balance: 3951,
    gender: "male"
  },
  {
    name: "Blackburn Dotson",
    balance: 1498,
    gender: "male"
  },
  {
    name: "Sheree Anthony",
    balance: 2764,
    gender: "female"
  }
]

muszę napisać funkcję, która będzie zwracać sumę właściwości balance dla wszystkich gender:"female" - trzeba tu łańcuchowania metod (metody filtrowania, reduce()
nie mam za bardzo pomysłu jak to ugryźć, mam tyle ale się zaciąłem

Kopiuj
const getTotalBalanceByGender = (users, gender) => {
return [...users]
  .filter((gen,index,array)=>array.indexOf(gen)=== index)
  .reduce();
};
KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 20
4

Mozesz filtrowac zanim uzyjesz reduce
czyli

Kopiuj
users.filter((user)=> user.gender == 'female')
  .reduce ...

ale mozesz miec to tylko w reduce z warunkiem dla gender

Kopiuj
users.reduce((a, b)=> a + (b.gender == 'female' ? b.balance : 0), 0);
DE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 311
3
Kopiuj
const getTotalBalanceByGender = (users, gender) => {
	return users.filter((item) => item.gender == gender)
    .reduce((acc, curr) => acc+curr.balance, 0);
};

console.log(getTotalBalanceByGender(users, 'female'))

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.