2016-09-22 4 views
1

Ramda REPL example

안녕하세요, 그래서 객체의 배열을 가지고있다. 이 객체들은 어떻게 든 $$hashKey을 얻습니다. 을 제거해야 내 방울이 중복되거나 고유 로직을 제거합니다.

let tickers = [ 
    { 
    $$hasKey: "object:280", 
    ticker: 'goog' 
    }, 
    { 
    $$hasKey: "object:308", 
    ticker: 'goog' 
    }, 
    { 
    $$hasKey: "object:327", 
    ticker: 'goog' 
    } 
] 

R.uniq(tickers); //-> Returns all instead of 1 

R.dropRepeats(tickers); //-> Returns all instead of 1 

나는이 시도,하지만 내 시세 배열은 3 개 undefined 값으로 끝났다.

const removeRepeats = tickers => { 
    console.log('removeRepeats', tickers); 
    tickers = _.map(tickers, ticker => { 
     delete ticker['$$hasKey']; 
    }); 

    return R.dropRepeats(tickers); 
}; 
+0

합니까 "ramda"는이를 **지도()**? – JonSG

+0

예 http://ramdajs.com/docs/#map –

+1

removeRepeats를 다음과 같이 업데이트하면 어떻게됩니까? ** tickers = _.map (tickers, ticker => {return {ticker : "ticker"}};}); ** – JonSG

답변

2

나는 시도 할 것이다 :

const removeRepeats = tickers => { 
    console.log('removeRepeats', tickers); 
    tickers = _.map(tickers, ticker => { return {ticker: ticker["ticker"]}; }); 
    return R.dropRepeats(tickers); 
}; 
2

난 당신이 모두 lodash 필요한 이유를 알고 함께 ramda하지 않습니다. 그 자체로 lodash 또는 ramda 중 어느 하나 라이너로 충분하다

lodash :

_.uniqWith(_.map(tickers, (ticker) => _.pick(ticker, ['ticker'])), _.isEqual) 

ramda :

R.uniq(R.map(R.pick(['ticker']))(tickers)) 

하거나 $$ (각 내부 속성로 시작하는 모든 속성없이 비교하려는 경우)

로다시 :

_.uniqWith(_.map(tickers, (ticker) => _.pickBy(ticker, (val, key) => !_.startsWith(key, '$$'))), _.isEqual) 

ramda :

R.uniq(R.map(R.pickBy((v, k) => !k.startsWith('$$')))(tickers)) 
3

난 당신이 정말 uniq보다는 dropRepeats를 원하는 있으리라 믿고있어. uniq은 목록에서 다른 요소의 컬렉션을 제공합니다. dropRepeats은 단순히 동일한 값의 순차 복사본을 제거합니다. ([1, 1, 2, 3, 3, 3, 2, 2, 1] => [1, 2, 3, 2, 1]).

이렇게하려면 두 가지 단계가 있습니다. 하나는 문제가되는 키 (RamDA의 dissoc이 도움이 됨)없이 버전을 생성하는 것이고 하나는 uniq 요소를 줄이기위한 것입니다. 나는이처럼 작성할 수 있습니다

let myFunc = R.pipe(R.map(R.dissoc('$$hasKey')), R.uniq); 
myFunc(tickers); 

당신은 단순히 하나의 속성을 제거하는 대신 당신이 할 수있는 그들의 고정 된 목록을 유지하고 싶지 않은 경우 :

R.pipe(R.map(R.pick(['ticker', 'prop2', 'prop3'])), R.uniq)