使用Lodash插入缺失的数据

时间:2014-10-17 16:21:16

标签: json underscore.js lodash

如果我们想插入缺失的数据,最好使用哪种Lodash功能?例如,我们的数据是

[ 
    { 'time' : '12:00', status : true },
    { 'time' : '01:00', status : true },
    { 'time' : '02:00', status : true },
    { 'time' : '03:00', status : true },
    { 'time' : '04:00', status : true },
    { 'time' : '23:00', status : true },
]

我想插入05:00到22:00

1 个答案:

答案 0 :(得分:1)

var startNumber = 5;
var endNumber = 22;
var step = 1;

var originalArray = [ 
  { 'time' : '12:00', status : true },
  { 'time' : '01:00', status : true },
  { 'time' : '02:00', status : true },
  { 'time' : '03:00', status : true },
  { 'time' : '04:00', status : true },
  { 'time' : '23:00', status : true },
];

var getMappedItem = function(item) {
    return {
        time: item + ':00',
        status: true
    };
};

var newArray = originalArray.concat(_.range(startNumber, endNumber + 1, step)
    .map(getMappedItem));

// newArray not contains the joint array of missing data.
// you can now use _.sortBy() to actually sort array with a function
// to determine how to sort it.
// for example _.sortBy(newArray, function(item) {
//   return parseInt(item.time.substr(0,2))
// });