You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中实现获取数组中最接近指定值的int元素?

在Dart中实现从int数组获取与指定值最接近的元素

给定一个int类型数组和目标值,我们需要编写函数返回数组中与目标值最接近的元素。示例场景如下:

final myArray = [10 , 20, 14, 15, 18, 24];
final int randomInt = 21;

getClosestValueInArray(myArray, randomInt); // 预期返回 20

函数实现

int getClosestValueInArray(List<int> array, int value) {
  // 处理空数组的边界情况,可根据业务需求调整返回逻辑
  if (array.isEmpty) {
    throw ArgumentError("数组不能为空");
  }

  // 初始化最接近元素和最小差值
  int closest = array.first;
  int minDiff = (closest - value).abs();

  // 遍历数组逐一比较
  for (int num in array.skip(1)) {
    int currentDiff = (num - value).abs();
    // 找到差值更小的元素则更新
    if (currentDiff < minDiff) {
      minDiff = currentDiff;
      closest = num;
    }
    // 可选逻辑:差值相同时选择更大的元素
    // else if (currentDiff == minDiff && num > closest) {
    //   closest = num;
    // }
  }

  return closest;
}

逻辑说明

  • 边界处理:先判断数组是否为空,避免后续操作出现异常,这里选择抛出参数异常,你也可以根据需求返回特定默认值。
  • 初始值设定:以数组第一个元素作为初始的最接近元素,同时计算其与目标值的差值绝对值作为初始最小差值。
  • 遍历比较:逐个遍历数组剩余元素,计算每个元素与目标值的差值绝对值,若该差值小于当前最小差值,则更新最接近元素和最小差值。
  • 差值相等场景:如果需要在两个元素与目标值差值相同时,优先选择更大(或更小)的元素,可取消注释代码块中的逻辑进行调整。

内容的提问来源于stack exchange,提问作者Sunshine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 01:36:59