我有一个常见问题解答库,它们被分成前端的标签,我们已经构建了一个处理它们的NodeJS应用程序,因此我们可以拥有一个FAQ数据库而不是硬编码的HTML。
我有一个NodeJS模型生成一个JSON文件,该文件通过其选项卡关联使用以下内容过滤问题:
res = _.groupBy(res, 'tab_title');
哪个输出this。
但是,下面是原始JSON文件的结构,模板中的Mustache标记期望它看起来像:
{
"tabs": [
{
"title": "Tab title",
"id": 1,
"questions": [
{
"question": "Question here",
"id": 1,
"answer": "Answer here"
},
{
"question": "Question two",
"id": 2,
"answer": "Answer here"
}
]
},
{
"title": "Another title",
"id": 2,
"questions": [
{
"question": "Question here",
"id": 1,
"answer": "Answer here"
},
{
"question": "Question two",
"id": 2,
"answer": "Answer here"
}
]
}
}
这样前端标签可以循环显示标签,然后循环显示标签内的问题,使前端相对自动化。
我曾尝试使用_.map
函数输出此结构中的所有相关信息,但我真的很挣扎。任何人都可以指出我的方向可以帮助吗?
我希望这是足够的信息,但如果没有,我可以提供更多信息。
谢谢!
答案 0 :(得分:0)
所以我们开始像你一样生成组。
_.groupBy(myArray, 'tab_title');
然而,这并没有完全解决我们的问题,该对象仍然不符合预期的结构。它看起来像是:
{
"tab_title1" : [{...}, {...}],
"tab_title2" : [{...}, {...}]
}
因此我们可以使用map函数进一步处理:
_.map(groupObject, (lstFaqs, tab_title) => {
let first = _.first(lstFaqs),
tab_object = {
title: first.tab_title,
id: first.tab_id,
questions: _.map(lstFaqs, (faqItem) => {
id: faqItem.faq_id,
question : faqItem.faq_question,
answer : faqItem.faq_answer
})
}
return tab_object;
})
我们最终会得到一个tab_object数组。所以最终确定格式:
let result = { "tabs" : array_of_tab_object }
我希望这有帮助!