【发布时间】:2019-03-25 15:50:56
【问题描述】:
我正在从 Typeform API 检索答案。我会将这些答案放入数据集中,其中问题是列名。 所有这些都有效,直到没有回答问题。 这不会返回空值。 例如:
问题:[A、B、C、D]
答案:[a, c, d] -> 问题 B 没有收到答案。
对于上述示例,我希望输出 [a, null, c, d]。
我尝试了多种方法在我的代码中实现这一点,但我没有找到正确的答案。
let surveys = formsAnswer.items.map(survey => {
let i = 0
let lam = survey.answers.map(ans => {
let answ
let rightID2 = schema.map(findID => {
if (findID.id.toLowerCase() === req.body.id){
let id = findID.columnID[i]
i++
return id
}
})
switch (ans.type) {
case 'boolean':
answ = ans.boolean ? 'Yes' : 'No'
break
case 'choice':
answ = ans.choice.label
break
case 'payment':
answ = parseFloat(ans.payment.amount) * 100
break
case 'empty':
answ = null
break
default:
answ = ans[ans.type]
break
}
return answ
})
return lam
})
return res.status(200).json(surveys)
})
在架构中,我可以访问来自 1 个表单的所有问题 ID 的数组。
提前致谢!
编辑 1 包含 10 个问题的调查的示例输出。
[
[["ZoW7FL2pVKvR","gfds"],
["amx5Q2JU4Qa7","Car 1"],
["jlqW0xFRGXdm","No"],
["FhfIURjvE8nN","dfs@hotmail.com"],
["vVTYmlvc1YIy",0]
["DqX2Dy0cvmMy","fezfze"]],
[["ZoW7FL2pVKvR", "Ruben"],
["ihNcWeYgZHPb","Male"],
["amx5Q2JU4Qa7","Car 2"],
["jlqW0xFRGXdm", "Yes"],
["FhfIURjvE8nN","ruben@gmail.com"],
["vVTYmlvc1YIy", 2],
["b8y0pDw3gYpn","No"],
["beeg0rtb7Mai","1995-02-10T00:00:00Z"],
["Knox8dyeM4Ak",10]]
]
这是 1 个调查中所有 questionID 的数组
"columnID": [
"ZoW7FL2pVKvR",
"ihNcWeYgZHPb",
"amx5Q2JU4Qa7",
"jlqW0xFRGXdm",
"FhfIURjvE8nN",
"vVTYmlvc1YIy",
"b8y0pDw3gYpn",
"beeg0rtb7Mai",
"Knox8dyeM4Ak",
"DqX2Dy0cvmMy"
]
【问题讨论】:
-
我不明白这个问题?不要使用null而只使用0?你的数组将是 [a,0,c,d]
-
问题不在于 0 或 null。如果我有一系列问题 [A, B, C, D],而这个人只回答了问题 [A, C, D]。然后我在问题 B 的索引上检索答案 C。在我的变量 lam 中,我映射了这些检索到的答案,但我需要找到一种方法来检查已回答问题的 id,并将其与索引匹配问题。
-
在用户选择答案之前,初始化一个与问题数量相匹配的空项目数组。
[null, null, null, null]然后根据用户的交互,您可以获取问题答案并将其放入初始数组的位置。如果用户现在至少没有回答一个问题,那么您将获得一个 null 代替该问题。 -
嗯,因为你推NULL,这个地方是空的,但是如果你推0,它会代替B。所以[A,B,C,D]和[A,0 ,C,D], C 具有相同的索引。所以是的,问题是关于 0 或 null
-
输出似乎有缺陷,无法验证特定问题。您可以根据答案的长度与输出中数组的长度来验证特定的部分,但是为了将答案与您需要某种键/id链接的问题相匹配
标签: javascript node.js typeform