node.js - 已解析的 Json 数组在 Dialogflow 中显示未定义
问题描述
以下是我的 json 数据:
{
"code": "200",
"count": 3,
"data": [
{
"_id": "602a2d4427e5ac1f5c8e897b",
"survey_id": "602a5de91d4f0000ec004b94",
"parent_question_id": "",
"is_required": "1",
"is_active": "1",
"options": [
{
"_id": "604b22c53b57d53fdc8c43f3",
"question_id": "602a2d4427e5ac1f5c8e897b",
"option_type_id": "602a2b0127e5ac1f5c8e8976",
"option_details": "He/She is good.",
"is_active": "1"
},
{
"_id": "604b22df3b57d53fdc8c43f5",
"question_id": "602a2d4427e5ac1f5c8e897b",
"option_type_id": "602a2b0127e5ac1f5c8e8976",
"option_details": "He/She is Average.",
"is_active": "1"
},
{
"_id": "604b22e63b57d53fdc8c43f6",
"question_id": "602a2d4427e5ac1f5c8e897b",
"option_type_id": "602a2b0127e5ac1f5c8e8976",
"option_details": "He/She is Poor.",
"is_active": "1"
},
{
"_id": "604b22d33b57d53fdc8c43f4",
"question_id": "602a2d4427e5ac1f5c8e897b",
"option_type_id": "602a2b0127e5ac1f5c8e8976",
"option_details": "He/She is Excellent.",
"is_active": "1"
}
],
"qustion_type": {
"_id": "602a2b2627e5ac1f5c8e8978",
"question_type": "Multie Radio",
"is_active": "1"
}
},
]
}
在这里,我想获取“option”数组中的“option_details”的数据。我能够得到选项数组。
以下是我的代码:
return
axios.get(api call here)
.then((results) => {
results.data.data.map(quesobj => {
ques.push(quesobj.question_text);
})
console.log(ques);
results.data.data.map(questypeobj => {
questype.push(questypeobj.qustion_type.question_type);
})
results.data.data.map(optionobj => {
option.push(optionobj.options);
})
console.log("Hello");
console.log(option);
console.log(option[0]);
console.log(option[0].option_details);
conv.add('Thank you');
})
在控制台中,当我打印选项时,它会显示来自 api 的选项数组。但是当我打印 option[0] 时,它会出现 [] 而当我打印 option[0].option_details 时,它会出现未定义。我该如何解决这个问题?
有人可以帮我吗?
解决方案
到底是怎么回事
在您的 json 数据中,options
是一个数组。所以,这一行:
option.push(optionobj.options)
会将一些数组推送到您的option
变量中。最后,option
是一个数组数组,option[0]
是一个数组,并且option[0].option_details
是未定义的。
建议
如果我理解正确,您希望option
成为一个包含options
属性中所有项目的数组。您可以使用扩展运算符来做到这一点,从:
option.push(optionobj.options)
至 :
option.push(...optionobj.options);
扩展运算符会将所有项目optionobj.options
(而不是数组本身,这就是区别)推送到option
您可以在此处找到有关传播语法的更多信息
推荐阅读
- javascript - Svg 元素和大型 svg 的动画有时无法完全加载
- java - Cassandra频繁写超时异常
- python - 通过线程并行化慢速 api 调用
- flyway - Flyway:每次迁移后如何执行一个函数
- javascript - 右滑动时删除列表项 react-native
- php - 在 Git Repo 上克隆最新提交的文件
- javascript - 影子 DOM 中的 GetElementById
- linux - 打印带有 n 行长段落的文本文件
- javascript - 从 5 分钟间隔到 20 分钟间隔过滤日期数组
- reactjs - 动态从 Firestore 中删除数据