繁体   English   中英

如何将向每个对象添加键的_.each函数转换为Ramda?

[英]How to convert this _.each function that adds a key to each object into Ramda?

http://jsfiddle.net/leongaban/4xfc4g3c/1/

洛达

const spamData = [true, true, false];
const tweets   = [{ tweet: "Hello" }, { tweet: "World" }, { tweet: "Pork"}];

_.each(spamData, (value, i) => {
  tweets[i]['spam'] = value;
});

log(tweets);

此时卡住:

拉姆达

const setSpamValues = (spamValue) => {
    return spamValue;
};

R.forEach(setSpamValues, spamData);

不确定现在将返回的spamValue发送到每个推文中名为spam的新密钥的最佳方法是什么。

您也可以使用R.zipWithR.assoc实现此目的。

const updatedTweets = R.zipWith(R.assoc('spam'), spamData, tweets);

在利用图书馆为您服务之前,您应该养成思考如何自行解决这些问题的习惯。 如果您正在解决这个基本问题,则可能需要重新考虑完全使用Ramda。 一旦您了解了Ramda提供的实用程序,也许就可以使用它了。

这就是您要寻找的结果,仅使用普通的JavaScript。

 const spamData = [true, true, false]; const tweets = [{ tweet: "Hello" }, { tweet: "World" }, { tweet: "Pork"}]; let result = tweets.map((t,i) => Object.assign({}, t, {spam: spamData[i]}) ); console.log(result); // [ // {"spam": true, "tweet": "Hello"}, // {"spam": true, "tweet": "World"}, // {"spam": false, "tweet": "Pork"} // ] 


如果您坚持使用R.zip ,则可能正在寻找R.zip

 const spamData = [true, true, false]; const tweets = [{ tweet: "Hello" }, { tweet: "World" }, { tweet: "Pork"}]; let result = R.zip(spamData, tweets).map(([spam, tweet]) => Object.assign({}, tweet, {spam}) ); console.log(result); // [ // {"spam": true, "tweet": "Hello"}, // {"spam": true, "tweet": "World"}, // {"spam": false, "tweet": "Pork"} // ] 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.22.1/ramda.js"></script> 

ps,下次您提出问题时,应包括预期的输出。


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM