JavaScript如何根据指定索引从二维数组中获取对应位置的子数组
问题分析
你的现有代码核心取值逻辑没有本质错误,但存在3个明显问题:
return语句后的console.log(result)是永远不会执行的死代码:JS函数执行到return就会直接退出,后续逻辑全部不会触发。- 存在冗余代码:提前声明空数组
result再做赋值返回属于多余操作,没有实际作用。 - 缺少边界校验:如果传入的索引超出数组范围、或者第一个入参不是合法二维数组,代码会直接返回
undefined,没有容错处理。
修正方案
直接精简逻辑,补全基础校验,把日志逻辑移到return之前即可,修正后代码如下:
const input = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; const index = 1; function grab(input, index) { // 入参合法性校验 if (!Array.isArray(input) || !Number.isInteger(index) || index < 0 || index >= input.length) { return []; // 非法入参可根据业务需求选择抛出错误或返回默认值 } const result = input[index]; console.log('获取到的子数组:', result); return result; } // 测试调用 grab(input, index); // 控制台打印[4,5,6],返回值也为[4,5,6]
如果不需要日志打印和入参校验,最精简的写法可以直接写成:
const grab = (input, index) => input[index];
调用后即可直接拿到对应索引的子数组,传入示例参数时返回值就是预期的[4,5,6]。
内容的提问来源于stack exchange,提问作者Yoshi
相关产品推荐
相关产品推荐

