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

问题描述 投票:-2回答:1

我疯了吗?

我有两个功能:

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"
  }
]

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

但是,我也得到了:

Console log for data mapping in js

Object.freeze does可以工作,但是为什么将值转换为undefined?

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

javascript reactjs momentjs higher-order-functions
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.