循环对象并在某个位置之前和之后执行自定义代码

时间:2015-11-08 15:14:08

标签: javascript jquery

我有点卡住了,希望有人能给我一些帮助。 jQuery和Moment Libs已经在我的项目中了。

我有一个javascript对象(来自PHP的json响应),它构建如下:

0: {hour: "0", id: "1", job: "A", position: "0"}
1: {hour: "2", id: "2", job: "B", position: "1"}
2: {hour: "3", id: "3", job: "C", position: "2"}
3: {hour: "4", id: "4", job: "D", position: "3"}

现在我选择一个随机的 ID 和一个 DATE TIME 让我们说 2 2015-01-01 12:00

解决方案输出应为:

Job: A, Date: 2015-01-01 10:00 //-2h (hours from Job B) minus from previous ID Date
Job: B, Date: 2015-01-01 12:00 //selected ID 
Job: C, Date: 2015-01-01 15:00 //+3h hours add to last ID Date
Job: D, Date: 2015-01-01 19:00 //+4h hours add to last ID Date

到目前为止,这是我的代码:

       var sel_date = moment([2015,00,01,12,00]);
       var sel_id = '2';

       var sel_object = jQuery.grep(e, function(n,i){
           return n.id === sel_id;
       });
       var sel_position = sel_object[0].position;

       var job = [];
       var date = [];
       var add_date = sel_date;

       $.each(e,function(key, value){
           job.push(value.job);
           if (value.position != sel_position){
               if (value.position > sel_position){
                   add_date = moment(add_date).add(Number(value.hour), 'hours').format('YYYY-MM-DD HH:mm');
                   date.push(add_date);
               } else {
                   date.push(moment(sel_date).subtract(Number(value.hour), 'hours').format('YYYY-MM-DD HH:mm'));
               }
           } else {
               date.push(moment(sel_date).format('YYYY-MM-DD HH:mm'));
           }

       })

问题是较小的位置 B,C,D 有效,但当位置较小时,我需要来自即将到来的循环的 value.hour 。我应该在循环中运行第二个循环吗?想不出一个好方法。

1 个答案:

答案 0 :(得分:0)

抱歉可以“轻松”自己修复它。我只是使用对象 e 并从那里获得一个位置向前的值。

return mongoose.model('Submission')
  .aggregate([
    { $match: { client: { $in: clientIds }, admin: this._admin._id } },
    { $sort: { client: 1, submitted: -1 } },
    { $group: {
      _id: '$client',
      lastSubmitted: { $first: '$submitted' },
      timezone: { $first: '$timezone' },
    } },
  ])
  .exec();

干杯 汉纳斯