2016-03-10 17 views
5

Mi sento a mio agio nonostante la programmazione funzionale con Ramda e sto faticando su qualcosa che sembra dovrebbe essere facile.Applicare NOT logico a propEq e filtrare in ramda

Voglio tutte le voci in un array in cui una proprietà non corrisponde a.

Per esempio in js puri

const filtered = source.filter(entry => entry.name !== 'something'); 

In Ramda c'è un propEq così posso facilmente ottenere tutti gli elementi che fanno corrispondere un valore come

const filtered = R.filter(R.propEq('name','something'),source); 

Ma non riesco a vedere come do l'inverso di quello, per restituire solo i valori che non corrispondono a.

Sono sicuro che questo deve essere molto facile, ma sto lottando per vedere un costruito in funzione di farlo, la più vicina che può venire in mente è:

const others = R.filter(rate => rate.name !== name,res.rates); 

Ma io sono sicuro che ci deve essere un modo migliore?

risposta

7

Sì, Ramda ha un rovescio della filter chiamato reject:

R.reject(R.propEq('name', 'something'))(source) 

Si può vedere questo sulle Ramda REPL

+0

fantastici grazie, ero sicuro che ci fosse un modo semplice di farlo :) – antfx

+2

Vedere anche ['R.complement'] (http://ramdajs.com/docs/#complement). – davidchambers