使用JS的.reverse()批量反转嵌套数组中子数组元素并返回新数组
批量反转子数组内数字元素的问题解析与修复
明确batch的类型
batch是嵌套数组,它的结构为:一个包含多个子数组的数组,每个子数组内存储的是数字元素,例如:[[1, 2, 3], [4, 5, 6]]。
错误原因
你直接对整个batch数组调用.reverse()方法——这个方法的作用是反转当前数组自身的元素顺序,也就是调换所有子数组在batch中的位置(比如原第一个子数组会变成最后一个),但不会遍历并反转每个子数组内部的数字元素,这就是为什么你只看到子数组顺序反转,而子数组内的数字没变化。
可行实现方案
要实现“批量反转子数组内的数字元素”且返回新数组,需要遍历batch的每个子数组,对每个子数组单独执行反转操作,同时注意避免修改原数组(.reverse()是原地修改方法):
方案代码
function reverseEachSubarray(batch) { // 遍历每个子数组,先复制再反转,返回新数组 return batch.map(subArr => [...subArr].reverse()); }
代码说明
batch.map(...):遍历batch中的每个子数组,返回一个全新的结果数组[...subArr]:通过扩展运算符复制原有的子数组,避免直接修改原数组的子元素(也可以用subArr.slice()实现同样的复制效果).reverse():对复制后的子数组执行内部元素反转,得到子数组内数字顺序颠倒的新数组
示例验证
原数组:
const batch = [[1, 2, 3], [4, 5, 6, 7]];
调用函数后返回的新数组:
[[3, 2, 1], [7, 6, 5, 4]]
如果不需要保留原数组的子数组,也可以直接写batch.map(subArr => subArr.reverse()),但这种写法会修改原数组中的子数组内容,不推荐在需要保留原数据的场景使用。
内容的提问来源于stack exchange,提问作者stullex _
相关产品推荐
相关产品推荐

