输入范围值检查 (AngularJS)

3

我在网页上有一个范围输入控件(我正在使用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或4(就像四舍五入一样)。
希望这讲得清楚。

可能类似这样 - https://jsfiddle.net/fs4p6330/ - Michael Doye
是的,我想这个可以。你能把它发表为答案,这样我就可以标记它了 :D - r3plica
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接