[英]Array.map function returns undefined or [undefined]
嘿伙计们,我在这里有点困惑。 我在做什么错我在一个看起来像这样的外部文件中有对象数组:
import moment from "moment";
export default [{
filterOn: "startDate",
startDate: moment("01/01/2013", "DD/MM/YYYY").startOf("day"),
endDate: moment().startOf("day")
}];
然后我通过props
导入我的数组,例如: props.datePickerDefinition
到一个单独的文件中,我正在获取数组,并尝试通过useState
和setState
将数组中的值提取到某些状态
const [fromToDatePickerColumn, setFromToDatePickerColumn] = useState();
const [dateFrom, setDateFrom] = useState();
const [dateTo, setDateTo] = useState();
我的目标是使用useEffect
函数并使用useEffect
更新这三个元素的状态:
useEffect(() => {
props.datePickerDefinition.map((date) => {
switch (typeof date) {
case 'string':
setFromToDatePickerColumn(date.fromToDatePickerFilterOn)
break;
case'moment' :
setDateFrom(date.startDate)
setDateTO(date.endDate)
}
})
})
所以我首先有两个问题。 我可以使用switch
盒来检查矩对象吗? 第二个也是最重要的一个是为什么当我从.map
函数中提取值时我收到undefined
,但是如果我通过props.datePickerDefinition.map((date) => console.log(date))
检查值我看到它 。 有人能帮我一把吗,我会很感激地了解我做错了什么。
我尝试过.forEach
函数:
const array1 = [{first:'a', second:'b', third:'c'}]; const test = array1.forEach(element => element.first); console.log(test)
还有 .map :
const array1 = [{first:'a', second:'b', third:'c'}]; const test = array1.map(element => element.first); console.log(test)
但在这种情况下,它返回我["a"]
并且我只需要值而不是Array
您需要再次迭代日期以设置状态。 但是地图不适合这里。 试试下面的代码:
useEffect(() => {
props.datePickerDefinition.forEach(date =>{
for(let key in date){
const dateItem = date[key];
switch (typeof dateItem) {
case 'string':
setFromToDatePickerColumn(date.filterOn);
break;
case 'object' :
setDateFrom(date.startDate);
setDateTo(date.endDate);
break;
default: break;
}
}
})
})
在地图中的 switch case 内添加 return 语句
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.