Javascript Array.map函数返回undefined或[undefined]
嘿,伙计们,我有点困惑。我做错了什么?我在一个外部文件中有一个对象数组,看起来像这样:Javascript Array.map函数返回undefined或[undefined],javascript,arrays,reactjs,Javascript,Arrays,Reactjs,嘿,伙计们,我有点困惑。我做错了什么?我在一个外部文件中有一个对象数组,看起来像这样: import moment from "moment"; export default [{ filterOn: "startDate", startDate: moment("01/01/2013", "DD/MM/YYYY").startOf("day"), endDate: mo
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();
我的目标是使用useffect
功能,并使用开关盒更新这三个元素的状态:
useEffect(() => {
props.datePickerDefinition.map((date) => {
switch (typeof date) {
case 'string':
setFromToDatePickerColumn(date.fromToDatePickerFilterOn)
break;
case'moment' :
setDateFrom(date.startDate)
setDateTO(date.endDate)
}
})
})
首先我有两个问题。我可以使用开关盒检查力矩对象吗?第二个也是最重要的一个问题是,为什么当我从.map
函数中提取值时,我会收到未定义的,但是如果我通过props.datePickerDefinition.map((date)=>console.log(date))
检查值,我就会看到它。如果有人能帮我一把,我会非常感激地理解我做错了什么
我已尝试使用.forEach
功能:
constarray1=[{first:'a',second:'b',third:'c'}];
const test=array1.forEach(element=>element.first);
console.log(test)
在映射中的开关盒中添加返回语句您需要再次迭代日期以设置状态。但这张地图不适合这里。
请尝试以下代码:
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;
}
}
})
})
你需要从地图上归还一些东西吗?依我看,你什么也不退。如果我看到一个map函数,但它没有返回任何内容,我会感到困惑。如果您不想返回任何内容,forEach会更好。基本上,FromToDate PickerColumn
必须设置为“startDate”
。。。从数组中的数据等等,但是在我的例子中,返回的是未定义的
,您是否验证日期类型
是否返回“时刻”
?它不会返回“object”
?啊,是的,我必须检查object
而不是moment
,但如果我尝试const test=props.datePickerDefinition.forEach((date)=>date.filterOn)
结果仍然是未定义的。。。。我不明白如果你知道数组只有一个元素,你可以只const test=array1.map(element=>element.first)[0]
或者更好的array1[0]。首先
是的,这已经完成了任务。所以我知道在第一次迭代之后,我也对日期进行了迭代。谢谢你的帮助。干杯