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]。首先
是的,这已经完成了任务。所以我知道在第一次迭代之后,我也对日期进行了迭代。谢谢你的帮助。干杯