飞镖-从列表中获取最近的(更大)值?

时间:2020-03-04 11:43:51

标签: dart

如何在列表中找到最接近的值,这将返回更高的值? 示例:[3,7,12,19]的列表,如果我的值是8,如何获取最接近(更大)的值12?我想用飞镖这种逻辑。

2 个答案:

答案 0 :(得分:2)

仅对List进行过滤,仅过滤出大于或等于您的数字的值并获得最低值:

var n = 8; // Number to match
var l = [3, 7, 12, 19]; // List of values

var greater = l.where((e) => e >= n).toList()..sort(); //List of the greater values

print(greater.first); // Print the first value. -> 12

答案 1 :(得分:0)

List<int> arr = [6, 12, 11, 18, 24,5,6,99,10,9];
    arr.sort((a, b) => a.compareTo(b));
    print(arr);
    print(Utils.getNextLargerNumber(8, arr));

及以下是逻辑:

static int getNextLargerNumber(int number, List<int> array)
  {
    for (var i = 0; i < array.length; i++) {
      if (number < array[i]) {
        return array[i];
      }
    }
    return -1;
  }