这个问题好像有点奇怪。没关系。
这是一个数组
[2, 7, 5, 10]
如果我想得到 2 之后的下一个更大的数字,这是我的代码
var MyArray = [2, 7, 5, 10];
var RandomNumber = 2;
var MinGreaterThanPos;
for (var i =0; i < MyArray.length; i++) {
if (MyArray[i] <= RandomNumber)
continue;
if (typeof(MinGreaterThanPos) == 'undefined' || MyArray[i] < MinGreaterThanPos)
{
MinGreaterThanPos = i;
}
}
alert(MyArray[MinGreaterThanPos]);
它将返回 7。
如果我想获得 greater
中最低的怎么办? 2 之后的数字?
也就是说,7, 5, 10
大于 2。但我想得到 5,因为 5 和 2 之间的差异小于其余任何与 2 的差异。
我该怎么做?
更新:
说到这里,如果数组里面有对象呢?
例如:
var MyArray = [{user: 1, position:2}, {user:2, position: 6}, {user:3, position: 4}];
我只想用 position
做同样的事情.如果我选择位置 2,那么我希望返回的下一个位置是 4 而不是 6。
最佳答案
另一种解决问题的方法如下。最初,我们扩展 Array 添加一个 min 方法,以便我们获得数组的最小元素。这取自 here .然后我们过滤我们的数组,以便我们排除小于或等于我们作为阈值的数字的条目。最后我们找到最小值。
Array.min = function( array ){
return Math.min.apply( Math, array );
};
var numbers = [2, 7, 5, 10];
var number = 5;
var numbers = numbers.filter( function( n ){
return n > number;
});
console.log( Array.min( numbers ) );
关于javascript - 在 JavaScript 中的数组中查找下一个最高元素中的最低元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40189340/