Próbuję przenieść się bardziej w stronę programowania funkcjonalnego w aplikacjach javascript. Obecnie używam biblioteki ramda jako biblioteki bazowej do tego.Funkcjonalne podejście do usuwania elementów na liście w oparciu o zagnieżdżone wartości właściwości
Moim pragnieniem:
- Tworzenie removeUserFromList funkcji (nazwa użytkownika, listy), która zwraca pozycje na liście, która nie pasuje do nazwy użytkownika.
- Wykonaj implementację tak krótką, jak to możliwe, polegając na istniejących funkcjach w bibliotece Ramda tak bardzo, jak to możliwe.
Warunki:
się lista obiektów zagnieżdżonych użytkowniczki:
[{
providers: {
github: {
login: "username1"
}
}
},
{
providers: {
github: {
login: "username2"
}
}
}]
acheived tak daleko: demo
var list = [{providers: {github: {login: "username1"}}},
{providers: {github: {login: "username2"}}}];
var getLoginName = R.useWith(R.path('providers.github.login'));
var isLoginNameEq = R.useWith(R.eq, getLoginName);
isLoginNameEq(list[0], "username1") // => true
//From this point on I am totally clueless,
//but I believe I should combine these functions
//with R.reject in some way.
Plunkr:
http://plnkr.co/edit/1b5FjxV3Tcgz7kozW1jX
Pytanie:
Czy istnieje funkcja lepiej nadaje się osiągnąć coś podobnego do R.eq ale na obiektach zagnieżdżonych (może R.pathEq)?
Dzięki, będę pamiętać, że następnym razem będzie czytelność> zwięzłość. Po prostu fajnie jest pisać krótsze programy. :) Btw. świetna praca z Ramdą. – horte