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

使用jQuery从数组中选取4个最小值的实现方法

用JavaScript(结合jQuery可选)提取数组中4个最小值

嘿,这个需求很常见,我来给你一步步捋清楚怎么实现——其实核心是原生JavaScript的数组操作,jQuery只是辅助(甚至完全可以不用),不过我会兼顾你提到的jQuery场景:

核心思路

要获取数组里的4个最小值,关键步骤是:

  1. 复制原数组(避免排序时修改原数组)
  2. 按数字升序排序(注意不能用默认的字符串排序)
  3. 截取前4个元素
  4. (可选)转成逗号分隔的字符串格式

基础代码示例(原生JS为主)

假设你的原始数组是类似 [14, 2, 3, 4, 20, 18, 5, 10],代码如下:

// 原始数组
const numArray = [14, 2, 3, 4, 20, 18, 5, 10];

// 1. 复制数组(避免修改原数组),然后按数字升序排序
const sortedArray = [...numArray].sort((a, b) => a - b);

// 2. 截取前4个最小值
const smallestFour = sortedArray.slice(0, 4);

// 3. 转成逗号分隔的字符串(和你要的预期格式一致)
const result = smallestFour.join(',');

console.log(result); // 输出:2,3,4,5

结合jQuery的写法(如果习惯用jQuery方法)

如果你更倾向于用jQuery的工具函数,比如用$.grep()替代原生filter()来过滤无效值,可以这么写:

const numArray = [14, '2', 3, 'abc', 4, 20, null, 5];

// 用jQuery的grep过滤有效数字,再排序截取
const sortedArray = $.grep(numArray, function(item) {
  // 过滤出可以转成有效数字的项
  return !isNaN(parseFloat(item)) && isFinite(item);
})
.map(Number) // 转成数字类型
.sort((a, b) => a - b); // 数字升序排序

const smallestFour = sortedArray.slice(0, 4);
console.log(smallestFour.join(',')); // 输出:2,3,4,5

关键注意点

  • 一定要用(a, b) => a - b作为排序函数:默认的sort()是按字符串Unicode码排序,会导致10排在2前面的错误结果。
  • 复制数组的原因:sort()是原地修改数组的方法,直接给原数组排序会改变原数组的结构,用扩展运算符[...numArray]或者numArray.slice()可以生成一个副本。
  • 如果数组里有非数字值,记得先过滤,避免排序出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:21:36