所以我的页面上有一个范围输入控件(我正在使用angularJS)。 我将步骤设置为1,最大值设置为10,如下所示:
<input type="range" step="1" max="10" ng-model="question.score" ng-change="controller.arrangeFilters()" />
现在,它正在检查的模型可以包含任意数量的值,例如:
var first = [3.333, 6.666, 10],
second = [2, 4, 6, 8, 10],
third = [1.666, 3.332, 4.998, 6.664, 8.330, 9.996];
所以,当滑块改变时,我需要它来检查值并找出它最接近的数组中的数字。 对于第一个数组,如果范围值为1,则它最接近3.33。 但你也可以选择4和第一个仍然最接近3.33的阵列。 问题在于第二个数组,如果用户选择3,则它与2和4之间的距离相同。
所以,我的问题是,是否有一个函数可以检查两个数字之间的数字并找出它最接近的数字?如果可能的话,我希望它不会返回2个结果,以便在第二个数组上选择2或4(如舍入)。
我希望这是有道理的。
答案 0 :(得分:2)
您可以使用reduce
var second = [2, 4, 6, 8, 10],
userInput = 3;
var closestInt = second.reduce(function (prev, curr) {
return (Math.abs(curr - userInput) < Math.abs(prev - userInput) ? curr : prev);
});
alert(closestInt); //Output: 2