Javascript 合并对象Ramda

Javascript 合并对象Ramda,javascript,node.js,ramda.js,Javascript,Node.js,Ramda.js,我正在尝试执行以下值的um比较合并com ramda: const data1 = {"crypto1":"BTCUSDT","crypto2":"ADABTC","crypto3":"ETHUPUSDT"}; const data2 = [ {"symbol":"ETHBTC","baseAsset":&quo

我正在尝试执行以下值的um比较合并com ramda:

const data1 = {"crypto1":"BTCUSDT","crypto2":"ADABTC","crypto3":"ETHUPUSDT"};

const data2 = [
  {"symbol":"ETHBTC","baseAsset":"ETH","status":"TRADING","id":1},
  {"symbol":"BTCUSDT","baseAsset":"LTC","status":"TRADING","id":2},
  {"symbol":"ETHUPUSDT","baseAsset":"BNB","status":"TRADING","id":3},
  {"symbol":"NEOBTC","baseAsset":"NEO","status":"TRADING","id":4},
  {"symbol":"ADABTC","baseAsset":"QTUM","status":"TRADING","id":5},
  {"symbol":"EOSETH","baseAsset":"EOS","status":"TRADING","id":6}
];
我需要的是搜索data1(加密)并与data2匹配,预期结果是:

result = [
  {"symbol":"BTCUSDT","baseAsset":"LTC","status":"TRADING","id":1},
  {"symbol":"ADABTC","baseAsset":"QTUM","status":"TRADING","id":2},
  {"symbol":"ETHUPUSDT","baseAsset":"BNB","status":"TRADING","id":3}
]
应该注意,id必须根据data1变量中数据的顺序进行更改


感谢您的支持,并就我应该如何做提出了一些建议。

使用
R.indexBy
创建一个
{[symbol]:object}
字典,然后在使用
R.values
将键(
data1
)转换为数组后,使用
R.values
从字典中选择项目:

const{curry,pipe,indexBy,prop,props,values}=R;
const fn=curry((键、数据)=>管道(
indexBy(prop('symbol'),//按符号索引值
props(值(键))//将键转换为数组并从字典中获取它们
)(数据);
const data1={“crypto1”:“BTCUSDT”,“crypto2”:“ADABTC”,“crypto3”:“ethupustt”};
const data2=[{“symbol”:“ETHBTC”,“baseAsset”:“ETH”,“status”:“TRADING”,“id”:1},{“symbol”:“BTCUSDT”,“baseAsset”:“LTC”,“status”:“TRADING”,“id”:3},{“symbol”:“NEOBTC”,“baseAsset”:“NEO”,“status”:“TRADING”,“id”:4},{“symbol”:“ADABTC”,“baseAsset”:“QTUM”,“status”:“TRADING”,“id”:5},{“symbol”:“EOSETH”,“基本资产”:“EOS”,“状态”:“交易”,“id”:6}];
const result=fn(数据1,数据2);
控制台日志(结果)

更新你的文章标题:这是过滤,不是合并。您没有将data1和data2组合到一个新对象中。然后根据您试图筛选的事实搜索web/SO。请记住,已经非常有用了,您应该仔细阅读它,因为
filter
是一个强大的函数。您有没有强烈的理由在Ramda中这样做?在vanilla js中非常简单:
Object.values(data1.flatMap((crypto)=>data2.filter(({symbol})=>symbol==crypto))
。我是Ramda的创始人之一,也是一个忠实的粉丝,但我试着只在它比普通代码更简单的地方使用它。我想这里没有。