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

如何对含数值与字符串的数组排序并获取最小值?

解决数组混合数字与字符串的排序及最小值获取问题

你的代码问题在于:当sort函数比较数字和字符串"NotFound"时,a-b会返回NaN,导致排序逻辑失效,无法得到预期的顺序。以下是两种可行的解决方案:

方案1:直接获取最小值(更高效,若仅需最小值可优先用)

先过滤出数组中的数字元素,再通过Math.min直接获取最小值:

var urunAdi = [350, 456, "NotFound"];
// 筛选出所有数字类型的元素
const validNumbers = urunAdi.filter(item => typeof item === 'number');
var lowestPrice = Math.min(...validNumbers); // 结果为350

方案2:对整个数组按预期排序

修改sort的比较函数,区分数字和字符串类型,确保数字升序排列在前,字符串在后:

var urunAdi = [350, 456, "NotFound"];
urunAdi.sort(function(a, b) {
  const isANumber = typeof a === 'number';
  const isBNumber = typeof b === 'number';

  if (isANumber && isBNumber) {
    return a - b; // 数字之间按升序比较
  }
  // 数字永远排在字符串前面
  return isANumber ? -1 : 1;
});
// 排序后数组为 [350, 456, "NotFound"]
var lowestPrice = urunAdi[0]; // 结果为350

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:45:37