2014-02-13 3 views
0

Может ли кто-нибудь помочь мне с форматированием даты после lodash _.filter? Ниже приведен код «Вторник 21 января 2014 00:00:00 GMT-0500 (Восточное стандартное время)». Я хочу, чтобы дата была в формате «m/d/yy».Формат даты Javascript после _.filter Lo-Dash Call

var testdata=[{"date": "1/21/2014", "y": 325, "z": 201, "a": 85}, 
         {"date": "1/22/2014", "y": 250, "z": null, "a": 40}, 
         {"date": "1/23/2014", "y": 125, "z": 500, "a": 60}, 
         {"date": "1/24/2014", "y": 50, "z": 466, "a": 35} 
         ]; 

        _.each(testdata, function(data){ 
        var dateParts = data.date.split('/') 
        data.date = new Date(dateParts[2], dateParts[0] - 1, dateParts[1]) 
        }); 

        var startDate = new Date(start); 
        var endDate = new Date(end); 

        var requiredData = _.filter(testdata, function(data){ 
         return data.date >= startDate && data.date <= endDate 
        }); 
+0

Можете ли вы предложить решение? – davids12

ответ

1

Вы должны _.map() массив _.filter() «Эда форматирования даты соответственно.

Изменение ваша последняя линия:

var requiredData = _.map(
    _.filter(testdata, function(data){ 
     return data.date >= startDate && data.date <= endDate 
    }), function(nextData){ 
     return nextData.date.getDate() + '/' + (nextData.date.getMonth()+1) + '/' + nextData.date.getFullYear().toString().split('').slice(2,4).join(''); 
    } 
); 

EDIT: Я думал, что вы хотите только отформатированный дату. Виноват. Изменить назначение requireData на:

var requiredData = _.map(_.filter(testdata, function(data){ 
      return data.date >= startDate && data.date <= endDate 
     } // end of _.filter()'s handler function 
    ), 
    function(nextData){ 
     // create new field called 'formatted' in each object with formatted date 
     nextData.formatted = (nextData.date.getMonth()+1) + '/' + nextData.date.getDate() + '/' + nextData.date.getFullYear().toString().split('').slice(2,4).join(''); 
     return nextData; 
    } // end of _.map()'s handler function 
); 

Это сделает requiredData массив из объекта, как вы имели первоначально с добавлением, что каждый из них будет иметь свойство formatted, который будет содержать дату в формате m/d/yy

+0

Похоже, что мои другие объекты не возвращаются в требуемые данные. Когда я смотрю на document.write (requiredData), все, что включено, являются объектами даты, а не любыми другими y, z и переменными. – davids12

+0

Блестящий. Большое спасибо Thalis, я очень ценю вашу помощь! – davids12