从javascript数组返回仅一个月的第一天?

时间:2013-12-03 13:52:50

标签: javascript arrays angularjs angularjs-ng-repeat

好的我有一个数组如下:

    [0 … 99]
0: Object
       date: Mon Jun 17 2013 00:00:00 GMT+0200 (CEST)
1: Object
      date: Tue Jun 18 2013 00:00:00 GMT+0200 (CEST)
2: Object
     date: Wed Jun 19 2013 00:00:00 GMT+0200 (CEST)

依此类推,对于整年3年的每个月,我都试图从我的数组中每月只返回一个月的名称和年份我正在使用下面的Javascript将对象文字转换为数组:

scope.monthpicker = function(alldatesdumparray){
   var alldatesdump = booking.getalldates();
   var alldatesdumparray = $.map(booking.getalldates(), function(value, index) {
      return [value];
   });
      console.log(alldatesdumparray);
return alldatesdumparray;
};

以及使用ng-repeat输出数组的以下angularJS:

        <select ng-click="monthpicker()" >
           <option class="animate-repeat" ng-repeat="returnpicker in monthpicker(alldatesdumparray)" value="{{returnpicker.date  | date:'yyyy-MMM' }}">{{returnpicker.date  | date:'yyyy-MMM' }}</option>
        </select>

哪个工作正常,它只是在我的阵列中的所有日期超过一个月的每天一个选项,我想过滤它只返回一个月?

2 个答案:

答案 0 :(得分:1)

不确定这是否是您问题的可行解决方案。 您可以使用moment.jsunderscore.js的组合吗?

var days = [...]// your array of dates.

var filtered = _.uniq(days, function(item) {
    return moment(item).format("YYYY MM");
});
console.log(filtered); => array containing one day per month.

这将返回每个月的第一天。

答案 1 :(得分:1)

您可以使用new Date(/* ..*/)

打包模型

<强> JS

           $scope.pickers = [

               {date: new Date('Tue Feb 18 2013 00:00:00 GMT+0200 (CEST)')},
               {date: new Date('Wed Jan 19 2013 00:00:00 GMT+0200 (CEST)')},
               {date: new Date('Mon Jun 17 2013 00:00:00 GMT+0200 (CEST)')}
            ]; 

HTML

    <select >
       <option 
       ng-repeat="returnpicker in pickers" 
       >{{returnpicker.date  | date:'MMM' }}</option>
    </select>

演示 Plunker