Bei der Arbeit an einer Frageoptionsfunktion bin ich auf dieses Zusammenführungsproblem gestoßen. Es gibt Single-Choice-Fragen. Bei Multiple-Choice-Fragen gibt es mehrere Antworten. Das Auswahlergebnis ähnelt dem Bild unten:
Ich muss die Daten derselben Multiple-Choice-Frage zu einer zusammenführen, d ignoriert. Gibt es eine einfache Möglichkeit, dies zu erreichen? Knie nieder und danke!
一个基本思路,先把数据遍历一遍,相同问题的题目存为一个数组,然后遍历处理相同题目的数组,将答案拼接即可。
示例:
数据:
// 给相同题目分类
对相同类型的题目进行遍历,后面的都放到第一个里面即可。
并重新按照原格式存放
更新
看了2楼的回答,其实之前的过程可以简化,不过确实如3楼所言,和ES6的map没有什么关系。我用了ES5的
forEach
。不用ES5,只用ES3,换成普通for循环完全没有问题的。使用map反而负复杂了。由于不需要分类的题目数据,所以可以直接拼接答案,不用先归类了,实现如下:
这样出来的
data2
是一个对象的形式,如果需要数组,再处理即可。还是要赞同三楼的一点。即使是多选题,原数据也不该是你所列的那种组织方式。直接在统计多选题已选答案时就处理好,不是更好的方式吗?
提供一个好玩的思路,能实现,但不一定适用于真实场景;
定义一个空对象,循环遍历数组,然后空对象的属性名为 title对应的值也就是题目; 值为一个数组,把选项push进去,当然这在每一道题中可能还会涉及到去重的问题,最后的结果大概类似这样
如果可以用es6的话推荐Map
1楼的方法就能解决这个问题,
2楼的map不需要非得es6
3楼拒绝回答这个问题, 因为他觉得这种实现方式不太对