本文介绍在 javascript 中根据一组索引(如 [1, 2, 4])高效提取目标数组中对应位置元素的多种方法,重点讲解 `map()` 和 `filter()` 的适用场景、性能差异及边界注意事项。
在实际开发中,我们常需从一个数组中按指定位置批量获取多个元素——例如从 [2, 3, 5, 7, 11] 中取出索引为 1、2、4 处的值(即 [3, 5, 11])。JavaScript 原生不支持类似 arr[[1, 2, 4]] 的语法(该写法会返回 undefined),但可通过函数式方法优雅实现。
✅ 推荐方案:Array.prototype.map()
最直观、高效且语义清晰的方式是使用 map() 遍历索引数组,并对每个索引映射出原数组对应元素:
const arr = [2, 3, 5, 7, 11]; const indices = [1, 2, 4]; const result = indices.map(i => arr[i]); console.log(result); // [3, 5, 11]
✅ 优点:
- 时间复杂度为 O(k)(k 为索引数组长度),性能稳定;
- 保持索引顺序,输出结果与 indices 顺序严格一致;
- 支持稀疏索引、重复索引(如 [1, 1, 4] → [3, 3, 11]);
- 自动处理越界索引(arr[10] 返回 undefined,可配合 ?? 或校验增强健壮性)。
⚠️ 注意:若需容错,建议添加边界检查:
立即学习“Java免费学习笔记(深入)”;