如何从JSON.parse解析结果中提取QID开头的指定字段作为变量
问题排查
- 变量误用:外层循环的
key是responses数组的索引值,你在内层遍历values对象时,错误使用外层的key作为键取值,无法获取到values里的字段内容,应该用内层遍历得到的字段名变量取值。 - 缺少筛选逻辑:没有判断字段名是否以
QID开头的逻辑,会遍历所有字段,不符合需求。 - 内容覆盖问题:直接对容器的
innerHTML赋值,每次新值都会覆盖旧值,最终只能得到最后一个遍历到的内容。
修正代码
// 提前清空容器,避免原有内容影响 const container = document.getElementById("container"); container.innerHTML = ''; GetData.responses.forEach(item => { const valueMap = item.values; for (let field in valueMap) { // 同时满足:是对象自有属性、字段名以QID开头 if (valueMap.hasOwnProperty(field) && field.startsWith('QID')) { const currentVal = valueMap[field]; // 内容追加而非覆盖 container.innerHTML += `<div>${field}: ${currentVal}</div>`; console.log(field, currentVal); } } });
兼容说明
如果需要适配不支持startsWith方法的旧浏览器,可以把判断条件替换为field.indexOf('QID') === 0,实现同样的前缀匹配效果。如果需要过滤空值的QID字段,可以在判断条件中追加&& currentVal !== ''。
内容的提问来源于stack exchange,提问作者Damian Buttle
相关产品推荐
相关产品推荐

