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

JavaScript如何查找指定数值需插入数组对应位置的前置元素索引

实现思路
  • 首先从unitList中筛选出所有值大于unit的元素,同时记录每个元素对应的原始索引
  • 在筛选出的元素中找到数值最小的那一项,返回它的原始索引即可,这就是你要的插入位置
  • 如果你实际业务需要返回对应columns的id,拿到索引后直接取对应位置的id即可
正确实现代码
function getUnitPosition(unitList, unit) {
  // 空数组边界处理
  if (!unitList.length) return 'before add new unit';
  const maxVal = Math.max(...unitList);
  // unit大于所有元素的边界处理
  if (unit > maxVal) return 'before add new unit';

  // 筛选所有大于unit的元素,保留原始索引
  const largerItems = unitList.map((val, index) => ({ val, index }))
    .filter(item => item.val > unit);
  
  // 找到大于unit的元素中值最小的那一项
  const targetItem = largerItems.reduce((prev, curr) => 
    prev.val < curr.val ? prev : curr
  );

  // 直接返回索引,要返回columns的id就改成 return columns[targetItem.index].id
  return targetItem.index;
}
测试验证
const unitList = [1, 10, 36, 50, 20];
// 测试用例1
console.log(getUnitPosition(unitList, 13)); // 输出4,符合预期
// 测试用例2
console.log(getUnitPosition(unitList, 35)); // 输出2,符合预期
// 测试unit比所有元素小的场景
console.log(getUnitPosition(unitList, 0)); // 输出0,对应插入到1前面
// 测试unit比所有元素大的场景
console.log(getUnitPosition(unitList, 60)); // 输出'before add new unit'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:15:04