为何我的JavaScript代码无法提取planets数组的name属性?
问题排查与修复
你的代码核心问题是用错了数组方法:
filter方法的作用是筛选出数组中满足条件的元素本身,它会返回一个包含符合条件的原对象的新数组,而不是提取对象的某个属性。- 你需要的是
map方法,它能遍历数组并将每个元素转换为你需要的格式(这里就是提取name属性)。
修复后的代码
export function getPlanetNames(data) { const pNames = data.planets; const results = pNames.map(function (planet) { return planet.name; }); return results; }
更简洁的箭头函数版本
export function getPlanetNames(data) { return data.planets.map(planet => planet.name); }
额外优化(处理可能缺失name的情况)
如果担心planets数组里存在没有name属性的对象,可以先过滤再提取:
export function getPlanetNames(data) { return data.planets .filter(planet => planet.name) // 过滤掉name不存在或为空的元素 .map(planet => planet.name); }
内容的提问来源于stack exchange,提问作者OldsoulPhil
相关产品推荐
相关产品推荐

