javascript/查找数组中最接近的值
javascript / finding the closest value in an array
我正在修改jquery ui滑块。我希望用户能够滑动到某些"停止点",用滑块总宽度的百分比表示。例如,如果我有3个停止,它们将均匀地分布在0、50和100(%)。我将这些存储在一个数组[0.50100]中。
当用户拖动滑块并释放时,我会捕捉滑块的当前值。因此,如果他在酒吧滚动了56%,他的stopVal就是56。
如何编写一个函数来确定这个stopVal最接近数组中的哪个数字?这是我的代码:
var optValArr = [0,50,100];
function slideStop( event, ui ) {
var stopVal = ui.value;
//NOW NEED TO FIND CLOSEST ARRAY VALUE TO stopVal
}
此函数将允许您执行以下操作:
Array.prototype.closest = function(value) {
var i;
function diff(n) {
var diff = n - value;
return diff < 0 ? -diff : diff;
}
var found = this[0],
mindiff = diff(found);
for (i = 1 ; i < this.length ; i++) {
var currentdiff = diff(this[i]);
if (currentdiff < mindiff) {
found = this[i];
mindiff = diff(found);
}
}
return found;
}
现在你可以这样做了:
var optValArr = [0,50,100];
function slideStop( event, ui ) {
var stopVal = ui.value;
//NOW NEED TO FIND CLOSEST ARRAY VALUE TO stopVal
stopVal = optValArr.closest(stopVal);
}
注意:有些人认为为本机类型定义原型是危险的,因为如果两个库做相同的事情,可能会导致冲突(就像全局变量一样)。因此,如果您正在编写公共库,则应避免添加到本机类型的原型中。
试试这个:
var optValArr = [0,50,100];
function slideStop( event, ui ) {
var stopVal = ui.value;
var diff=101;
var val =0;
for(var i =0; i < optValArr.length; i++){
var tmpDiff = Math.abs(stopVal - optValArr[i]);
if(tmpDiff < diff){
diff=tmpDiff;
val = optValArr[i]
}
}
}
slideStop("something", {"value":20});
演示:http://jsfiddle.net/ggzZj/
var optValArr = [0,50,100];
function slideStop( event, ui ) {
var stopVal = ui.value;
var closestVal = optValArr.reduce(function (memo, curr) {
var currDiff = Math.abs(curr - stopVal),
memoDiff = Math.abs(memo - stopVal)
return memoDiff < currDiff ? memoDiff : currDif
})
}
"closer"的另一个常见定义是基于差的平方。但是,你可以通过简单地在原始数组中添加你想要的数字来做到这一点,如下所示:
[10,40,50, my_number]
然后,对数组进行排序,然后选择从右边还是左边最接近的位置。
你觉得怎么样?
相关文章:
- 获取最接近的数组数
- JavaScript:如何在最接近值的关联数组中查找键
- 在 javascript 数组中搜索最接近的下一个值
- 按键查找数组中最接近的 2 个元素
- Kadane 的最大子数组算法是否适用于所有正整数数组?
- Javascript/jquery- 如何在数组中获取最接近的时间
- 从数组中获取最接近的数字匹配项,必须更低
- 如何使用 lodash 从数组中获取最接近目标的前两个数字
- javascript/查找数组中最接近的值
- 什么'这是在二维数组中找到最短数组的最佳方法
- 在Javascript中查找最接近所需值的数组条目
- 查找数组数组中最长数组的索引
- 查找最接近给定时间数组的时间
- Javascript在数组中找到最接近的数字,而不需要重复
- 从数组中获取最接近的数字
- Javascript在数组中找到最接近的数字
- 最接近数组的价格
- 如何从数组中获得最接近的值
- 我如何在数组中找到最接近的数字,而不用遍历
- 获取数组(JS)组合的最接近的值