How to use Ramda to find matching object in Array by key value

人走茶凉 提交于 2019-12-22 06:09:10

问题


Ramda REPL example

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

var ticker = {ticker:"aa"};

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

console.log(exist)

Currently this is giving me undefined, however R.propEq should find the matching object by key ticker in port I thought?


回答1:


As you say, you can solve it by passing in the key to propEq:

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

Another option is to use the eqProps function, which tests if two objects match for the named key:

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

You can see the first or second version in the Ramda REPL.




回答2:


Ah it was a simple mistake, I forgot to pass in the exact key from the ticker object.

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

This is how I now solve my problem in my app:

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


来源:https://stackoverflow.com/questions/41351542/how-to-use-ramda-to-find-matching-object-in-array-by-key-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!