如何在 javascript 对象中找到最近的下限值和上限值?

how to find nearest values both lower and upper in a javascript object?

我需要在 javascript 对象中提取最接近的较低值和最接近的较高值。 我的逻辑是迭代对象并将所有低于我产品价值的值放入变量中(然后对最接近的较高值和所有较高的值执行相同操作)

我想在那个例子中提取的值是日期,它是对象的第一个值,它是这样构造的:"object":[[val1, val2],[val1, val2] ]

你觉得我的逻辑好吗,你能看出我的代码有什么问题吗?

var datagrph = $.parseJSON('{"label":"Yo", "fromDate":"2015-06-05", "launchDate":"2016-08-15", "dateValues":[["2014-06-05",1723.76], ["2015-06-29",1523.76], ["2015-12-29",1023.76], ["2017-01-29",523.76], ["2017-02-22",1523.76], ["2017-03-29",523.76], ["2017-04-29",1523.76], ["2017-05-29",23.76], ["2017-06-21",523.76] ]}');
var productCour = datagrph.dateValues;
var launchDate = datagrph.launchDate;

var val1 = [0];

Object.keys(productCour).map(function(objectDate, index) {
    var value = object[objectDate];
    if (value <= launchDate) {
        val1.push(value);
    } else if (value > launchDate) {
        value++;
    }
    return val1;
});


alert(val1);

简单地计算当前日期和launchDate之间的差异,然后相应地设置值:

var datagrph = $.parseJSON('{"label":"Yo", "fromDate":"2015-06-05", "launchDate":"2016-08-15", "dateValues":[["2014-06-05",1723.76], ["2015-06-29",1523.76], ["2015-12-29",1023.76], ["2017-01-29",523.76], ["2017-02-22",1523.76], ["2017-03-29",523.76], ["2017-04-29",1523.76], ["2017-05-29",23.76], ["2017-06-21",523.76] ]}');
var productCour = datagrph.dateValues;

var launchDate = +new Date(datagrph.launchDate+" T00:00");

var before,after,diffmin,diffmax;

productCour.forEach(function(pair){

 var current=+(new Date(pair[0]+"T00:00"));
 var difference=launchDate-current;

 if(difference>0){
    //launchDate not reached
    if(!diffmin || diffmin>difference){
       //weve got a new before
       before=pair[1];
       diffmin=difference;
    }
  }else{
    //launchDate already reached
    if(!diffmax || diffmax<difference){
       //weve got a new after
       after=pair[1];
       diffmax=difference;
    }
  }
});

之前和之后现在应该包含最接近的值。

before:1023.76
after: 523.76

http://jsbin.com/cozovecaha/edit?console