重新格式化地图值并使用扩展语法进行更新

时间:2017-04-03 05:42:56

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

我正在尝试格式化数组中的对象属性。我有一些麻烦,因为以下代码抛出以下错误,但反应原生抛出viewDidLoad

appDelegate

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

我应该怎么做?任何帮助/提示赞赏!

2 个答案:

答案 0 :(得分:1)

使用多个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);

答案 1 :(得分:0)

基于@fubar的回答。我们可以简单地使用delete方法删除对象属性。

参考:http://perfectionkills.com/understanding-delete/

在此之前,我们必须使用临时变量来保存属性并将其格式化以供使用。代码继续你期望的结果:

const result = objArr.map((item) => {
  var rawEventDate = item['event.date'];
  delete item['event.date'];
  return {
    'event.date': moment(rawEventDate).format('DD MMM YYYY'),
    ...item
  }
});

console.log(result);