javascript - 将整数数组映射到对象数组

标签 javascript arrays multidimensional-array momentjs lodash

我有一个嵌套的对象数组,我需要在其中格式化每个对象的属性

const myMap =  { 
  '1':
   [ { date: '2016-03-10T00:00:00', location: 'NV' },
     { date: '2016-03-10T00:00:00', location: 'WV' },
     { date: '2016-03-10T00:00:00', location: 'CA' } ],
  '2':
   [ { date: '2016-03-10T00:00:00', location: 'NJ' },
     { date: '2016-03-10T00:00:00', location: 'PA' } ],
  '3':
   [ { date: '2016-03-10T00:00:00', location: 'WA' },
     { date: '2016-03-10T00:00:00', location: 'NH' },
     { date: '2016-03-10T00:00:00', location: 'CA' } ] 
}

我目前使用 lodash 和 moment.js 编写此代码

var _ = require('lodash')
var moment = require('moment')

_.map(myMap["date"], (a) => { moment(a).format('DD MMM YYYY') })
console.log(myMap)
// []

它当前返回一个空数组,如何在不更改格式的情况下格式化每个日期?

最佳答案

由于您正在处理一个 Object,并且想要更改其中的值,因此需要使用 Lodash 的 _.mapValues() 函数 ( _.map() 用于数组)。

const myMap =  { 
      '1':
       [ { date: '2016-03-10T00:00:00', location: 'NV' },
         { date: '2016-03-10T00:00:00', location: 'WV' },
         { date: '2016-03-10T00:00:00', location: 'CA' } ],
      '2':
       [ { date: '2016-03-10T00:00:00', location: 'NJ' },
         { date: '2016-03-10T00:00:00', location: 'PA' } ],
      '3':
       [ { date: '2016-03-10T00:00:00', location: 'WA' },
         { date: '2016-03-10T00:00:00', location: 'NH' },
         { date: '2016-03-10T00:00:00', location: 'CA' } ] 
    };

    function formatDates(arr) {
      return _.map(arr, formatDate); //map each element of array using formatDate
    }

    function formatDate(data) { //copy and format data to new object for mapping
      let formattedData = {};
      formattedData.date = moment(data.date).format('DD MMM YYYY');
      formattedData.location = data.location;
      
      return formattedData;
    }

    let result = _.mapValues(myMap, formatDates); //iterate thru each key in object and update values

    console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.0/moment.min.js"></script>

关于javascript - 将整数数组映射到对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42939524/

相关文章:

c - 在结构中存储多维数组

c - 搜索/打印数组中的特定元素

PHP - 我可以从特定键移动数组吗?

c - 数组的动态分配

javascript - 在 OpenUI5 中强制清除缓存

javascript - 尝试向 Canvas 图像添加滤镜

java - 如何使用 while 循环检查数组大小是否已更改?

swift - 如何在 swift 中正确创建多维数组?

javascript - 导出模块模式

javascript - 如何遍历树并过滤javascript中的匹配节点?