首页 > 解决方案 > 现在在数组时间和时间范围内过滤数组

问题描述

当我现在尝试在数组时间中过滤时间时遇到了一些麻烦,我有这样的代码;

  var timeNow = "07";
    var timeShift = ["08","10","12","14","16","18","20","22","00","02","04","06"];
    var newData =[];
    for(var data of timeShift){
    	 if(data >= timeNow){
     	  	newData.push(data);
        }
    }
    console.log(newData[0]); // output 08

问题是输出与我的期望不同。
我想要:

如果timeNow是08,timeShift输出(选择)是08,
如果timeNow是07,timeShift输出(选择)是06,
如果timeNow是09,timeShift输出(选择)是08,
如果timeNow是23,timeShift输出(选择) 是 22,
. . . . . . . 继续作为数据timeNowtimeShift的结构,就像我在那里的期望一样。

我该如何解决这个问题?
请帮我。谢谢 :)

标签: javascriptarraysangulartimefilter

解决方案


您可以通过使用 numericak 值进行比较和减一的值进行检查来过滤值。

const getN = s => parseInt(s, 10),
      check = (strong, weak) => strong === weak -1 || strong === weak;
  
var timeNow = "07",
    timeShift = ["08","10","12","14","16","18","20","22","00","02","04","06"],
    result = timeShift.filter(s => check(getN(s), getN(timeNow)));

console.log(result);


推荐阅读