如何使用Ramda通过键值查找数组中的匹配对象
How to use Ramda to find matching object in Array by key value
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 应该通过键 ticker
在 port
中找到匹配的对象?
啊,这是一个简单的错误,我忘了从 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
按你说的,把key传给propEq
就可以解决:
R.find(R.propEq('ticker', 'aa'), port)
另一种选择是使用 eqProps
函数,该函数测试两个对象是否匹配指定的键:
R.find(R.eqProps('ticker', ticker), port)
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 应该通过键 ticker
在 port
中找到匹配的对象?
啊,这是一个简单的错误,我忘了从 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
按你说的,把key传给propEq
就可以解决:
R.find(R.propEq('ticker', 'aa'), port)
另一种选择是使用 eqProps
函数,该函数测试两个对象是否匹配指定的键:
R.find(R.eqProps('ticker', ticker), port)