getQuestionType() { let tiType = '' this.PDFTiInfo.tiCard.forEach((tiInfo) => { tiInfo.tiAreaList.forEach((types) => { //type: 1 客观 2主观 if (types.type === 1) { tiType = '客观题' } else if (types.type === 2 && tiType !== '客观题') { tiType = '主观题' } }); }); // console.log('tiType===>',tiType); return tiType; }我的type数据中有1也有2 但是结果都是一样的 要么全部是客观题 要么全部是主观题 我想应该是遍历的时候出了问题
时间: 2024-02-15 20:27:55 浏览: 22
从您提供的代码来看,遍历过程中使用了两层嵌套的循环,外层循环遍历了 `this.PDFTiInfo.tiCard` 数组中的每一个元素,内层循环遍历了每个元素中的 `tiAreaList` 属性。在内层循环中,对于 `types.type` 的值进行了判断,如果是 1,则将 `tiType` 设置为 '客观题';如果是 2 并且 `tiType` 不等于 '客观题',则将 `tiType` 设置为 '主观题'。
这段代码中没有明显的错误,但是可能存在以下两种情况:
1. `this.PDFTiInfo.tiCard` 数组中的所有元素都没有 `tiAreaList` 属性,或者 `tiAreaList` 属性中的所有元素的 `type` 属性都相同,导致 `tiType` 始终只被设置为同一个值。
2. `this.PDFTiInfo.tiCard` 数组中的某些元素的 `tiAreaList` 属性中存在不止一种类型的题目,但是内层循环中的判断条件不够准确,导致 `tiType` 的值被错误地设置为了 '客观题' 或 '主观题'。
建议您在代码中添加一些调试信息,例如在外层循环中输出当前遍历的元素,或者在内层循环中输出当前遍历的 `types.type` 的值,以便更准确地定位问题。
相关问题
vue中<div class="question-type">{{ getQuestionType( PDFTiInfo.tiCard[tiIndex] ) + tiIndex }}</div>tiIndex是题号从0开始 怎么把1 2 3 4...变成01 02 03 04 ...11
你可以使用padStart()方法来实现将数字转换成指定格式的字符串。具体实现如下:
```
<div class="question-type">{{ getQuestionType( PDFTiInfo.tiCard[tiIndex] ) + (tiIndex+1).toString().padStart(2,'0') }}</div>
```
在这个代码中,我们使用了toString()方法将数字转换成字符串,然后使用padStart()方法来将字符串填充成指定长度的格式,其中第一个参数是字符串的目标长度,第二个参数是用于填充的字符。在这里,我们将目标长度设置为2,用0来填充。这样,当tiIndex的值为0-9时,就会自动补充一个0在前面,变成01-09,当tiIndex的值为10-99时,就不会再进行填充,直接显示为10-99。
第一个情况 我打印了是有tiAreaList属性,里头的,每一项type属性不一致
如果您已经确认了 `this.PDFTiInfo.tiCard` 数组中的每个元素都有 `tiAreaList` 属性,且 `tiAreaList` 属性中的每个元素的 `type` 属性不一致,那么问题可能出在内层循环的判断条件上。
在当前的代码中,只有当 `types.type === 1` 时才会将 `tiType` 设置为 '客观题',而当 `types.type === 2 && tiType !== '客观题'` 时才会将 `tiType` 设置为 '主观题'。这种判断方式可能会导致一些问题,例如当 `tiAreaList` 中的第一个元素的 `type` 为 2 时,会将 `tiType` 设置为 '主观题',然后后面的所有元素都不会再修改 `tiType` 的值了,导致最终结果都是 '主观题'。
为了避免这种情况,建议在内层循环中使用 `break` 关键字跳出循环,一旦发现 `types.type` 为 2,就可以直接将 `tiType` 设置为 '主观题',并跳出循环。修改后的代码如下:
```
getQuestionType() {
let tiType = ''
this.PDFTiInfo.tiCard.forEach((tiInfo) => {
tiInfo.tiAreaList.forEach((types) => {
// type: 1 客观 2 主观
if (types.type === 1) {
tiType = '客观题'
} else if (types.type === 2) {
tiType = '主观题'
// 如果已经确定是主观题,则直接跳出循环
break
}
})
// 如果已经确定是主观题,则直接跳出循环
if (tiType === '主观题') {
break
}
})
// console.log('tiType===>',tiType);
return tiType
}
```
这样修改后,只要出现了 `types.type` 为 2 的情况,就可以直接确定为主观题,不需要再继续遍历了。