web-dev-qa-db-ja.com

Ramdaを使用して、キー値によって配列内の一致するオブジェクトを見つける方法

Ramda REPL例

var portfolio = [{ticker: "aa"},  {ticker: "bb"}];

var ticker = {ticker:"aa"};

var exist = R.find(R.propEq('ticker', ticker), portfolio)

console.log(exist)

現在、これは私にundefinedを与えていますが、 R.propEqtickerのキーportによって一致するオブジェクトを見つける必要があります思った?

6
Leon Gaban

あなたが言うように、あなたはキーを propEq に渡すことによってそれを解決することができます:

R.find(R.propEq('ticker', 'aa'), port)

もう1つのオプションは、 eqProps 関数を使用することです。この関数は、2つのオブジェクトが名前付きキーに一致するかどうかをテストします。

R.find(R.eqProps('ticker', ticker), port)

firstまたはsecondRamdaREPLのバージョン。

12
Scott Sauyet

ああ、それは単純な間違いでした。ティッカーオブジェクトから正確なキーを渡すのを忘れました。

R.propEq('ticker', ticker.ticker)

これが私のアプリの問題を解決する方法です。

const exists = R.find(R.propEq('ticker', this.ticker.ticker));
this.inPortfolio = !!exists(portTickers);
console.log('this.inPortfolio', this.inPortfolio)
// True or false
0
Leon Gaban