/**
* 求数组中与该时间最相近的值。
*/
export function binary_search(arr, key) {
var low = 0,
high = arr.length - 1,
min_index=0,
c_max=Infinity
;
while (low <= high) {
var mid = parseInt((high + low) / 2);
var c=Math.abs(key-arr[mid]);
if(c<c_max){
c_max=c;
min_index=mid;
}
if (key == arr[mid]) {
return mid;
} else if (key > arr[mid]) {
low = mid + 1;
} else if (key < arr[mid]) {
high = mid - 1;
} else {
return -1;
}
}
return min_index;
}
//通过排序,要么是前一个值,要么是后一个值最接近
export function getCloseTime(arr,time) {
var arr1=arr.concat();
time = moment(time).valueOf();
if(arr1.indexOf(time)===-1){
if(arr1[arr1.length-1]<time){
return arr.length-1
}else{
arr1.push(time);
arr1.sort();
通过排序,要么是前一个值,要么是后一个值最接近,少一步判断,判断一下差值
return arr1.indexOf(time);
}
}else {
return arr1.indexOf(time);
}
// var arr1= [];
// arr.forEach((item) => {
// var t = moment(item.time).valueOf();
// arr1.push(Math.abs(t-time));
// });
// //返回的是数组最近的索引值
// return arr1.indexOf(Math.min.apply(null, arr1));
}