javascript - Javascript循环遍历数组:无法读取未定义的属性“切片”
问题描述
我的 api 响应如下所示:
id: (...)
user_id: (...)
symptoms: "Sore throat, Headache"
id: (...)
user_id: (...)
symptoms: "Anorexia (Loss of appetite), Shortness of breath (Difficult in breathing), Myalgias (Muscle pains), Sore throat, Headache"
我正在尝试将用户症状与现有症状类别相匹配。一个用户最多可以有 14 个症状。当我拆分和切片数组以获取单个症状并匹配它们时,我不断收到无法读取未定义的属性“切片”的错误。
如果用户的症状少于 14 个,我尝试为对象设置默认值时,错误仍然存在。
我的代码:
getSymNum (symp, c) {
var counter = 0
for (var xc in c) {
var symp1 = c[xc].symptoms.split(',')[0]
var symp2 = c[xc].symptoms.split(',')[1].slice(1)
var symp3 = c[xc].symptoms.split(',')[2].slice(2)
var symp4 = c[xc].symptoms.split(',')[3].slice(3)
var symp5 = c[xc].symptoms.split(',')[4].slice(4)
var symp6 = c[xc].symptoms.split(',')[5].slice(5)
if (symp3 !== undefined){
console.log("hello ha")
}
if (symp1 === symp) {
counter++
} else if (symp2 === symp) {
counter++
} else if (symp3 === symp) {
counter++
} else if (symp4 === symp) {
counter++
} else if (symp5 === symp) {
counter++
} else if (symp6 === symp) {
counter++
}
}
return counter
},
解决方案
您可以使用数组/字符串方法优化检查,例如contains()
or indexOf()
:
etSymNum (symp, c) {
var counter = 0
for (var xc in c) {
if(c[xc].symptoms.indexOf(symp) !== -1){
counter++;
}
}
return counter
},
推荐阅读
- angular - 带有 Angular 的 Chrome 扩展 - 进行 REST API 调用
- perl - perl DBI 安装失败 alpine
- node.js - 角度和节点js中的zip文件上传问题
- windows - 更改具有无效证书的网页的浏览器行为
- reactjs - 如何在自定义挂钩的回调中保持更新的反应上下文值
- r - 使用一个数据的列值并将其用于绘制另一个数据
- python - 由于我们有旧版本的 Flask,因此未添加来自烧瓶的 SameSite cookie
- autodesk-forge - Autodesk Forge 将 DWG 上的许多布局转换为 PDF
- objective-c - NSSound 停止功能
- node.js - 如何根据 MongoDB 数据库中的键获取多个结果?