范围输入值检查(AngularJS)

range input value check (AngularJS)

本文关键字:AngularJS 检查 输入 范围      更新时间:2024-04-20

所以我的页面上有一个范围输入控件(我使用的是angularJS)。我已经将步骤设置为1,最大值设置为10,如下所示:

<input type="range" step="1" max="10" ng-model="question.score" ng-change="controller.arrangeFilters()" />

现在,它正在检查的模型可以有任意数量的值,最多可达10。例如:

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个结果,这样它就会在第二个数组上选择2或4(类似舍入)。

我希望这是有道理的。

您可以使用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