我很久以来都为这个问题烦恼,并且无法找到一个优雅的解决方案。假设我有如下数组:
[
{
question: "what is your name?",
answer: "Ben",
topic: "names"
},
{
question: "what is your name?",
answer: "Ben",
topic: "names"
},
{
question: "What is dog's name?",
answer: "Snugglets",
topic: "names"
},
{
question: "What is your brother's age?",
answer: 55,
topic: "ages"
}
]
我该如何将它转换成这样的数组?
[
{
topic: "names",
content: [...array of objects based on "names"...]
},
{
topic: "ages",
content: [...array of objects based on "ages"...]
}
]
我觉得这应该是一件非常简单的事情,但由于某些原因,我的大脑似乎无法掌握解决方案。我错过了什么?
更新:感谢所有回复!我没有想到会得到这么多完成此任务的方法。我接受了其中一个答案,因为它与ES6有关,我应该明确指出我正在寻找ES6的做法,如果可能的话 :)
尽管如此,我必须说需求也有所改变,不再是原来意图的数组,像这样:
[ { topic: "names", content: [...基于“名称”的对象数组...] }, { topic: "ages", content: [...基于“年龄”的对象数组...] } ]
数组需要看起来更像这样:
[ { topic: "names", content: '<div> <h3>问题:你的名字是什么?</h3> <p>答案:本</p> </div> <div> <h3>问题:你狗的名字是什么?</h3> <p>答案:Snugglets</p> </div>' }, { topic: "ages", content: content: '<div> <h3>问题:你的年龄是多少?</h3> <p>答案:50</p> </div> <div> <h3>问题:你兄弟的年龄是多少?</h3> <p>答案:52</p> </div>' } ]
通常情况下,我不喜欢只是要求给我代码,但是当涉及到算法转换数据时,我的JavaScript技能似乎有点弱 :( 你有什么想法可以将所有这些数组元素合并为一个包含HTML的字符串,作为每个“主题”的“内容”键?此外,这个问题是否更适合在Stackoverflow上提出?
({question: a.question, answer: a.answer})
而不仅仅是(a.answer)
。 - Florian Lemaitre