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

Posted

技术标签:

【中文标题】重新格式化地图值并使用扩展语法进行更新【英文标题】:Reformatting map values and updating with spread syntax 【发布时间】:2017-08-27 21:13:03 【问题描述】:

我正在尝试格式化数组中的对象属性。我遇到了一些麻烦,因为以下代码会引发以下错误,但反应原生会引发 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 更改为格式化数据?实际上有很多我想传递的变量,并且不认为将每个变量单独分配给一个新对象是最好的。

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

【问题讨论】:

您发布的示例对象对我来说没有多大意义。 objArr 看起来像 [ "event": "date": "2016-03-10T00:00:00", "location": "NV" ] 还是看起来像 [ "event.date": "2016-03-10T00:00:00", "event.location": "NV" ] 它们不是嵌套的,点的概念只是一个字符串 【参考方案1】:

您似乎使用多个maps 使任务过于复杂。

如果你简化问题,你应该可以这样做:

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);

【讨论】:

以上是关于重新格式化地图值并使用扩展语法进行更新的主要内容,如果未能解决你的问题,请参考以下文章

基于 MBTiles 规范扩展的缓存文件格式说明

如何在 PHP 数组中对格式项目进行编号

在地图的地图中查找值并返回主地图的键(或替代)

您如何更新 ko.observableArray 中的项目值并重新绑定?

在 java 中重新格式化字符串,包括扩展名

小书匠语法使用手册