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

如何在JavaScript中获取数组中指定值的前一个元素?

获取数组中指定值的前一个元素

要实现这个需求,核心是先定位目标值在数组中的索引,再根据索引返回对应前一个元素,同时得处理几种常见边界情况(目标值不存在、目标值是数组第一个元素)。

基础实现(匹配第一个出现的目标值)

var theArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 15];
const findValue = (arr, input) => {
  // 找到目标值的首次出现位置
  const targetIndex = arr.indexOf(input);
  
  // 边界判断
  if (targetIndex === -1) {
    return '目标值不在数组里';
  }
  if (targetIndex === 0) {
    return '目标值是数组第一个元素,没有前一个元素';
  }
  
  // 返回前一个元素
  return arr[targetIndex - 1];
}

// 测试示例
console.log(findValue(theArray, 15)); // 输出 14
console.log(findValue(theArray, 1)); // 输出 '目标值是数组第一个元素,没有前一个元素'
console.log(findValue(theArray, 10)); // 输出 '目标值不在数组里'

处理重复目标值(匹配最后一个出现的目标值)

如果数组里有多个相同的目标值,想要获取最后一个匹配项的前一个元素,可以改用lastIndexOf:

const findLastPrecedingValue = (arr, input) => {
  const targetIndex = arr.lastIndexOf(input);
  
  if (targetIndex === -1) {
    return '目标值不在数组里';
  }
  if (targetIndex === 0) {
    return '目标值是数组第一个元素,没有前一个元素';
  }
  
  return arr[targetIndex - 1];
}

// 测试重复值场景
const testArray = [5, 15, 3, 15, 7];
console.log(findLastPrecedingValue(testArray, 15)); // 输出 3

代码说明

  • indexOf/lastIndexOf:快速定位目标值的索引,找不到时返回-1
  • 边界判断:避免索引越界或目标不存在导致报错,同时给出明确提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:51:30