【发布时间】:2015-01-09 19:39:10
【问题描述】:
我需要一种优雅的方式将重复数据存储在 DataTables 中的选择下拉列表中。例如,我有 2 个问题,每个问题都有不同的答案。在这种情况下,问题 1 (keyno 1) 有 2 个可能的答案,问题 2 (keyno 2) 有 3 个可能的答案。在小提琴示例中,有 5 行(包含重复信息)但应该只有 2 行(每个 keyno 一个)。如何动态创建包含答案的下拉列表并仅显示我的 2 行,例如 for 循环?我不确定。
var data = [
{'keyno': '1', 'quest': 'Does a cat meow?', 'ans': 'yes'},
{'keyno': '1', 'quest': 'Does a cat meow?', 'ans': 'no'},
{'keyno': '2', 'quest': 'What color is a stop sign?', 'ans': 'red'},
{'keyno': '2', 'quest': 'What color is a stop sign?', 'ans': 'yellow'},
{'keyno': '2', 'quest': 'What color is a stop sign?', 'ans': 'green'}
]
$('#questtable').DataTable({
"data": data,
"columns": [
{ data: 'keyno' },
{ data: 'quest' },
{ data: 'ans' }
]
});
【问题讨论】:
-
您需要将其减少到两行,每行都有一个用于 ans 而不是字符串的数组。我喜欢使用 mustache 将服务器中的哑 json 转换为数据表注入到单元格中的哑 html,因此我不必使用 JS 构建 HTML。
-
在这种情况下,我不知道如何从我现有的数组创建一个新数组。
-
这就是你需要做的,但我承认这并不容易。像 lodash 这样的东西可能会有所帮助,但它仍然需要一些跑腿。提出关于转换“json”的问题可能会更好。无论如何,一旦行任务不重复并且 ans 包含所有可能性,将 col 转换为下拉列表非常简单,并且您走在正确的轨道上。
标签: javascript jquery for-loop dynamic datatables