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

如何访问日期格式键名的嵌套对象属性?NASA API数据访问问题

解决NASA API嵌套对象日期键访问报错的问题

这个报错的原因很明确:你直接写的2018-09-07在JavaScript里会被当成算术减法运算(2018减9减7),而不是你想要的日期字符串键名,严格模式下这种写法就会抛出"Legacy octo literals are not allowed in strict mode"的错误。

直接解决方法:用字符串包裹日期键

要正确访问带连字符的日期键,你需要把日期放在引号里(单引号或双引号都可以),告诉JS这是一个字符串键:

const asteroidList = this.props.asteroids.near_earth_objects["2018-09-07"];
console.log(asteroidList); // 现在可以正常访问该日期的小行星数据了

如果你的日期是动态生成的(比如用户选择的日期),可以先把日期存成字符串变量,再用变量访问:

const targetDate = "2018-09-07"; // 这里可以替换成动态获取的日期
const asteroidList = this.props.asteroids.near_earth_objects[targetDate];
console.log(asteroidList);

遍历所有日期数据的方案

如果你需要处理所有日期的小行星数据,可以先提取所有日期键,排序后逐个访问:

const nearEarthObjects = this.props.asteroids.near_earth_objects;
// 获取所有日期键并按时间排序(NASA返回的数据通常已经按日期排序,不过手动排序更稳妥)
const sortedDates = Object.keys(nearEarthObjects).sort((dateA, dateB) => new Date(dateA) - new Date(dateB));

// 遍历每个日期的数据
sortedDates.forEach(date => {
  const dailyAsteroids = nearEarthObjects[date];
  console.log(`日期 ${date} 的小行星数据:`, dailyAsteroids);
  // 在这里添加你的业务逻辑,比如渲染数据、筛选特定小行星等
});

补充说明

在JavaScript中,对象的键名如果包含特殊字符(比如-、空格)或者不是有效的标识符(比如以数字开头),必须用字符串形式通过方括号访问。如果用点语法(比如obj.2018-09-07)也会报错,因为点语法要求键名是有效的标识符。

内容的提问来源于stack exchange,提问作者Farah10

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:56:30