如何在 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
我需要在 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