2016-07-01 3 views
1

Ramda.js를 처음 사용하고 특정 속성을 기반으로 개체를 필터링하는 방법이 궁금합니다.Ramda.js의 속성으로 개체 필터링

_.filter값이이고 속성이 아닌 것으로 보입니다. 예를 들어, 예제는 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} 

경우 내가 가지고있는 다음 개체 :

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

내 원하는 결과는 다음과 같습니다

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

filterProp('b')(obj); 

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

어떻게 할 수 Ramda를 사용하여 객체의 속성을 필터링합니까?

답변

2

Ramda 문서를 파헤 쳐서, 나는 나의 특별한 사용 사례를 만족하는 R.omit을 발견했다.

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

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

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

pickBy 키를 기반으로 컬렉션을 필터링 할 수있는 방법을 사용하십시오.

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