如何使用Ramda通过关键值在数组中查找匹配对象

8

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)

目前这个代码给了我undefined,但是R.propEq应该在port中通过键ticker找到匹配的对象,我以为呢?
2个回答

18

正如你所说,你可以通过将键传递给propEq来解决它:

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

另一种选择是使用eqProps函数,该函数测试两个对象在指定键上是否匹配:
R.find(R.eqProps('ticker', ticker), port)

你可以在 Ramda REPL 中查看 firstsecond 版本。

0

啊,这只是一个简单的错误,我忘记从ticker对象中传递确切的键。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接