如何在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
相关产品推荐
相关产品推荐

