如何从日期对象中获取指定日期的时间数组数据?
动态访问对象中指定日期的时间数组
你遇到的问题是动态属性访问的语法错误——用点语法(timeGroup.formattedDate)会把formattedDate当成字面量属性名,而不是你定义的变量。要访问变量对应的属性,必须用方括号语法。
修正后的代码
直接把点语法替换成方括号,同时可以加个判断确保目标日期存在,避免报错:
useEffect(() => { if(date === '') return; const [year, month, day] = date.split('-'); const formattedDate = [day, month, year].join('/'); console.log(formattedDate); const timeGroup = getTimeDet(); // 用方括号访问动态属性 const targetTimeArray = timeGroup[formattedDate]; if (targetTimeArray) { console.log('选中日期的时间数据:', targetTimeArray); // 这里可以把targetTimeArray存到状态里或者做其他业务处理 } else { console.log('该日期没有对应的时间数据'); } },[date])
关键注意点
- 必须保证
getTimeDet()返回的timeGroup对象的键,和你生成的formattedDate格式完全一致(比如都是DD/MM/YYYY,无多余空格或格式差异) - 如果
timeGroup是异步获取的,要确保执行这段代码时它已经被正确赋值,避免undefined报错
内容的提问来源于stack exchange,提问作者roverrr
相关产品推荐
相关产品推荐

