Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找具有较高项但低于限制的对象的id_Javascript_Arrays_Node.js_Sorting - Fatal编程技术网

Javascript 查找具有较高项但低于限制的对象的id

Javascript 查找具有较高项但低于限制的对象的id,javascript,arrays,node.js,sorting,Javascript,Arrays,Node.js,Sorting,我有一个javascript对象数组,对象如下: smil .____.update (object) | |... | |____.stream (array) | |... | |____.playlist (array of object) |____.name (string) |____.scheduled |____... Scheduled是一个日期,我做了一个函数,以日期对象的形式获取它 现在,我需要在smil.playlist中找到对象的i

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

smil
.____.update (object)
|    |...
|
|____.stream (array)
|    |...
|
|____.playlist (array of object)
    |____.name (string)
    |____.scheduled
    |____...
Scheduled是一个日期,我做了一个函数,以日期对象的形式获取它

现在,我需要在smil.playlist中找到对象的id,它在过去(低于新的日期对象)并且离它越近

在以前的版本中,我使用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,或者是否需要重新编写应用程序的大部分?

您可以这样做:

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);
函数getclosest(最近、元素、索引、数组){ if((time.getTime()-getTime(element.scheduled.getTime())<(time.getTime()-getTime(closest.scheduled.getTime())) 收益指数; 其他的 返回最近的位置; } smil.reduce(getclosest);
您可以这样做:

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);
函数getclosest(最近、元素、索引、数组){ if((time.getTime()-getTime(element.scheduled.getTime())<(time.getTime()-getTime(closest.scheduled.getTime())) 收益指数; 其他的 返回最近的位置; } smil.reduce(getclosest);
By id,您是指数组中的索引,还是指对象上的“id”属性?数组中的索引,objectBy id中没有id属性,您是指数组中的索引,还是指对象上的“id”属性?数组中的索引,对象中没有id属性