javascript - 在 JavaScript 中的数组中查找下一个最高元素中的最低元素

标签 javascript arrays sorting

这个问题好像有点奇怪。没关系。

这是一个数组

[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/

相关文章:

javascript - 使用 JavaScript 在内存中生成 XML 文档

php - 将数组列表与数组中的下一个列表进行比较

c++ - 为什么 istream::operator>> 接受字符指针/数组?

ios - 如何在 Swift3 iOS 中根据键值按升序获取数组

javascript - 如何将JS对象添加到Sqlite数据库中

javascript - 使用表单时输入按钮不起作用

c++ - ArrayOutOfBoundsException 错误

python - 如何按数字部分的升序对字符串列表进行排序

php - 使用 php、ajax 和 jquery 对 mysql 表进行排序

javascript - 触发点击功能不正常