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(ticker、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のいずれかが1つのライナーで十分です

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])。

これを行うには、問題のキーなしでバージョンを作成する2つのステップ(Ramadaのdissocが役に立ちます)と、リストをuniq要素に縮小する2つのステップと考えています。あなたは、単に単一のプロパティを削除する代わりに、あなたが行う可能性がありますそれらの固定されたリストを維持したいしなかった場合

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

:私はこのようにそれを書くかもしれません

R.pipe(R.map(R.pick(['ticker', 'prop2', 'prop3'])), R.uniq) 
関連する問題