javascript - 重新格式化映射值并使用扩展语法进行更新

标签 javascript react-native ecmascript-6 lodash spread-syntax

我正在尝试格式化数组中的对象属性。我遇到了一些麻烦,因为以下代码抛出以下错误,但 react native 抛出 TypeError: In this environment the sources for assign MUST be an object.This error is a performance optimization and not spec compliant. <<< path/to/project/node_modules/react-native/packager/src/Resolver/polyfills/polyfills.js

const objArr = [ 
   { event.date: '2016-03-10T00:00:00', event.location: 'NV' },
   { event.date: '2016-03-10T00:00:00', event.location: 'WV' },
   { event.date: '2016-03-10T00:00:00', event.location: 'CA' } 
],

const formatDate = (data) => {
  const formattedDate = moment(data['event.start_date']).format('DD MMM YYYY');

  return { ...data, data['event.start_date']: formattedDate } };
}

const formatDates = (arr) => { return _.map(arr, formatDate) }

let result = _.map(objArr, formatDates);

我如何更改 event.date到格式化数据而不触及对象的其余部分?实际上,我想传递许多变量,并且不认为将每个变量单独分配给新对象是最好的。

我该怎么办?任何帮助/提示表示赞赏!

最佳答案

您似乎使用多个 map 使任务变得过于复杂。

如果你简化问题,你应该能够做到这一点:

const objArr = [ 
  { 'event.date': '2016-03-10T00:00:00', 'event.location': 'NV' },
  { 'event.date': '2016-03-10T00:00:00', 'event.location': 'WV' },
  { 'event.date': '2016-03-10T00:00:00', 'event.location': 'CA' } 
];

const result = objArr.map((event) => ({
  ...event,
  'event.start_date': moment(event['event.start_date']).format('DD MMM YYYY'),
}));

console.log(result);

关于javascript - 重新格式化映射值并使用扩展语法进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43177250/

相关文章:

javascript - 使用 Qooxdoo 组件而不使用整个框架?

javascript - JQuery Accordion 图像并排

javascript - React Native - 每次当 child 设置状态时渲染更新(我不想)

javascript - 异步生成器在 babel-node 上工作,但在 babel-register 或 build 上失败

javascript - 无法在 React 组件中导入 ES6 模块

javascript - 如何包装管道流以使其看起来像单个流?

javascript - JS点击按钮时播放声音

react-native - 你需要至少调用一次 create() 来在 React Native 中创建单例

javascript - react _this2.setState 不是函数 - 可能的绑定(bind)问题

javascript - 匹配对象数组中的对象键并返回键,具有最高音量值的值