2016-07-01 9 views
1

Ich bin neu in der Verwendung von Ramda.js und frage mich, wie ich ein Objekt basierend auf angegebenen Eigenschaften filtern kann.Filtern eines Objekts nach Eigenschaften in Ramda.js

Mit Blick auf R.filter scheint es, dass _.filter nur das Objekt Wert und nicht die Eigenschaft passiert. Zum Beispiel, da das Beispiel in der REPL:

var isEven = (n, prop) => { 
    console.log(typeof prop); 

    // => 
    // undefined 
    // undefined 
    // undefined 
    // undefined 

    return n % 2 === 0; 
} 

R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} 

Wenn ich habe folgendes Objekt:

const obj = {a: 1, b: 2, c: 3}; 

Mein gewünschtes Ergebnis wäre:

const filterProp = (x) => /* some filter fn */; 

filterProp('b')(obj); 

// => {a: 1, c: 3}; 

Wie kann Ich benutze Ramda, um die Eigenschaften eines Objekts zu filtern?

Antwort

2

Nach dem Graben durch die Ramda Dokumente, fand ich R.omit, die meinen speziellen Anwendungsfall erfüllt.

const obj = {a: 1, b: 2, c: 3}; 

R.omit(['b'], obj); 

// => {a: 1, c: 3}; 
1

Verwenden Sie die Methode pickBy, mit der Sie eine Sammlung basierend auf den Schlüsseln filtern können.

const obj = {a: 1, b: 2, c: 3}; 
var predicate = (val, key) => key !== 'b'; 
R.pickBy(predicate, obj); 
// => {a: 1, c: 3}