簡體   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