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

