使用JS映射构造对象会导致一些未定义的键。为什么?

时间:2019-11-21 16:36:05

标签: javascript reactjs momentjs higher-order-functions

我疯了吗?

我有两个功能:

export const timeblocks = (data) => {
  const res = data.map((d) => timeblock(d));
  console.log("tbs res[0].start", res[0].start);
  console.log("tbs res", res);
  return res;
}

export const timeblock = (data) => {
  const res = {
    id: data.id,
    start: moment(data.start),
    end: moment(data.end),
    duration: moment.duration(data.duration),
    timezone: data.timezone,
  };
  // return Object.freeze(res);
  console.log("tb res.start", res.start);
  console.log("tb res", res);
  return res;
}

我正在像这样传递数据:timeblocks(sampleData)

sampleData = [
  {
    "id": 1010,
    "start": "2019-11-21T05:00:00Z",
    "end": "2019-11-21T05:30:00Z",
    "duration": "00:30:00",
    "timezone": "UTC"
  },
  {
    "id": 1052,
    "start": "2019-11-21T05:00:00Z",
    "end": "2019-11-21T06:00:00Z",
    "duration": "01:00:00",
    "timezone": "UTC"
  }
]

在我的React应用程序中,startend键抛出TypeError未定义。

但是,我也得到了:

Console log for data mapping in js

Object.freeze 可行,但是为什么将值转换为undefined?

我不知道这是moment.js还是JS。

1 个答案:

答案 0 :(得分:0)

下游发生了一些改变,我的开始和结束值。由于生成的对象是可变的,因此这两个值将被设置为undefined。我发现这是在将结果值传递到redux动作之前进行记录的。感谢@VLAZ的建议