找到具有较高项目但低于限制的对象的ID

时间:2013-10-10 17:06:51

标签: javascript arrays node.js sorting

我有一个javascript对象数组,对象如下:

smil
.____.update (object)
|    |...
|
|____.stream (array)
|    |...
|
|____.playlist (array of object)
    |____.name (string)
    |____.scheduled
    |____...

预定是一个日期,我已经创建了一个函数来以Date对象的形式获取它。

现在,我需要找到smil.playlist中对象的id,它在过去(不如新的Date对象)并且越接近它。

在以前的版本中,我使用filter,sort和pop来获取对象,但是在应用程序结构发生变化之后,我现在需要它的id。

旧代码:

function get_last_playlist(smilp){
    //get current date
    time = new Date();
    //Delete all of playlist which are in the future
    smilp.filter(function(element) {
        return time.getTime() > gettime(element.scheduled).getTime();
    });
    //Sort by close to current time (higher scheduled)
    smilp.sort(function(a, b) {
        return gettime(a.scheduled) - gettime(b.scheduled);
    });
    //return the first in the array
    return smil.pop();
}

有没有办法在smilp.playlist中返回对象的id,或者我是否需要再次重写应用程序的大部分内容?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

function getclosest(closest, element, index, array){
  if((time.getTime()-gettime(element.scheduled).getTime()) < (time.getTime()-gettime(closest.scheduled).getTime()) ) 
  return index;
  else
  return closest;  
}

smil.reduce(getclosest);