Javascript-从数组中删除值-构造时间数组

Javascript-从数组中删除值-构造时间数组,javascript,arrays,Javascript,Arrays,我在想这个问题。我的想法是,我有一个考虑时间的值数组,我需要删除与特定时间重叠的所有值: var可用时间=['0-0.5','0.5-1','1-1.5','1.5-2','2-2.5','2.5-3'] var timeToRemove='0.5-2' 我完全可以控制阵列的外观,但这就是我的想法。我不知道如何构造我的可用时间数组和我的timeToRemove,这样我就可以完成这个任务。我使用的是24:00时钟,所以1-1.5是凌晨1:00到凌晨1:30 关于构造此表单的最佳方法有何想法?既然您

我在想这个问题。我的想法是,我有一个考虑时间的值数组,我需要删除与特定时间重叠的所有值:

var可用时间=['0-0.5','0.5-1','1-1.5','1.5-2','2-2.5','2.5-3']

var timeToRemove='0.5-2'

我完全可以控制阵列的外观,但这就是我的想法。我不知道如何构造我的可用时间数组和我的
timeToRemove
,这样我就可以完成这个任务。我使用的是24:00时钟,所以
1-1.5
是凌晨1:00到凌晨1:30


关于构造此表单的最佳方法有何想法?

既然您可以控制数据结构,我认为您最好将其构造为长度为2的数组,而不是字符串(尽管您可以使用
拆分(“-”
)将您拥有的内容转换为此表单)


我更喜欢一种面向对象的方法:

(1) 使用具有以下结构的对象构造数组:

  {
        StartTime:[fload],
        EndTime:[fload]
  }
  var timeToRemove = '0.5 - 2';
  =>
  var timeToRemove={StartTime:0.5,EndTime:2};
因此,您的时间数组如下所示

 var availableTimes=
    [
      {StartTime:0,EndTime:0.5},
      {...}
    ];
(2) 要删除的时间具有相同的结构:

  {
        StartTime:[fload],
        EndTime:[fload]
  }
  var timeToRemove = '0.5 - 2';
  =>
  var timeToRemove={StartTime:0.5,EndTime:2};
(3) 删除算法如下所示:

  for (var i=0;i<availableTimes.length;i++)
    {
      if(availableTimes[i].StartTime > timeToRemove.StartTime 
        && availableTimes[i].EndTime < timeToRemove.EndTime)
        availableTimes[i]=null; //perform deletion
    }
for(var i=0;i timeToRemove.StartTime)
&&可用时间[i].EndTime
var可用时间=['0-0.5'、'0.5-1'、'1-1.5'、'1.5-2'、'2-2.5'、'2.5-3']
var timeToRemove='0.5-2';
var tempar=timeToRemove.replace(/\s/g,“”).split('-');
for(var i=0,t=availableTimes.length;i
您必须在所有项目上循环,然后将字符串解析为可行的数字,然后使用返回true或false的逻辑进行检查。我建议使用
filter
循环数组-显示删除时间后的预期结果是什么?
   var availableTimes = ['0 - 0.5', '0.5 - 1', '1 - 1.5', '1.5 -2', '2 - 2.5', '2.5 -3']
   var timeToRemove = '0.5 - 2';

   var tempar = timeToRemove.replace(/\s/g,"").split('-');

   for(var i = 0, t = availableTimes.length; i < t; i++){
      var itemar = availableTimes[i].replace(/\s/g,"").split('-');
      if(tempar[0] === itemar[0] && tempar[1] === itemar[1]){
           availableTimes .splice(i, 1);
           return;
      }
   }