如何遍历嵌套JSON对象,用forEach获取languages数组元素的name属性
错误原因
你之前的代码不符合预期有两个核心问题:
- 不需要遍历单个语言对象的所有属性:你要的语言名称是固定键
name,直接访问langObj.name即可,不需要调用Object.entries遍历所有键值对 - 每次循环都直接覆盖
innerText的值:循环执行到最后时,只会保留最后一个语言对象最后一个属性nativeName的内容,之前的内容都会被覆盖
正确实现(forEach版本)
var popupCreateLanguagesResultTD = document.createElement("div"); popupCreateLanguagesResultTD.className = "col"; // 暂存所有语言名称 const languageNameList = []; result.languages.forEach(langItem => { // 直接读取每个语言对象的name属性存入数组 languageNameList.push(langItem.name); }); // 拼接为要求的展示格式,用逗号分隔所有语言名 popupCreateLanguagesResultTD.innerText = `Languages Spoken: ${languageNameList.join(', ')}`;
更简洁的替代实现(无需手动写forEach)
如果不需要做额外逻辑处理,直接用map提取所有name再拼接即可,代码更精简:
var popupCreateLanguagesResultTD = document.createElement("div"); popupCreateLanguagesResultTD.className = "col"; const langStr = result.languages.map(item => item.name).join(', '); popupCreateLanguagesResultTD.innerText = `Languages Spoken: ${langStr}`;
内容的提问来源于stack exchange,提问作者Ranisimo
相关产品推荐
相关产品推荐

