[英]How to push items from an array to another array using ramda expressions?
我有一個小問題,我有一個孩子數組,我解析它,從中獲取數據並重新格式化並將其推送到另一個數組subMenuContent
,它工作正常,但我需要更好地清理我的代碼,我使用 ramda 作為庫來為我簡化事情。
這是我之前做的,簡單的javascript。
let subMenuContent = [];
for (let counter = 0; counter < children.length; counter++) {
let parent = children[counter].props.item.id;
let childs = children[counter].props.item.childrens;
for (let i = 0; i < childs.length; i++) {
let child = {
content: childs[i],
class: 'cdiscountLinks cdiscountChip-' + childs[i].id + '-' + parent,
};
subMenuContent.push(child);
}
}
我現在想做的是:
const subMenuContents = map(function(item){
let parent = item.props.item.id;
let childs = item.props.item.childrens;
const itemChilds = map(function(child){
let childItem = {
content: child,
class: 'cdiscountLinks cdiscountChip-' + child.id + '-' + parent,
}
return childItem;
}, childs)
return itemChilds;
},children)
編輯:現在我用這個
const subMenuContents = pipe(
map(function(item) {
let parent = item.props.item.id;
let childs = item.props.item.childrens;
const itemChilds = map(function(child) {
let childItem = {
content: child,
class: 'cdiscountLinks cdiscountChip-' + child.id + '-' + parent,
};
return childItem;
}, childs);
return itemChilds;
}, children),
flatten,
)(subMenuContents);
但我收到一個錯誤:
f.apply is not a function
我究竟做錯了什么? 任何幫助將非常感激。
您可能有興趣查看 Ramda 中的R.chain
function。 這有時被稱為flatMap
,因為它可以被認為是映射數據類型,然后展平嵌套的結果。
R.chain
可以處理許多不同的數據類型,盡管對於 arrays 它有效地映射到數組的每個元素上,為每個元素生成一個數組,然后將它們連接在一起。
在您的示例中,您將希望查看用const subMenuContents = chain(...)
替換最外層的const subMenuContents = map(...)
...) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.