You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:45:21