偶数长度数组如何从两端向中心依次配对左右两侧元素
数组首尾配对简洁实现
下面提供两种无需手动写for循环的简洁写法,均符合你要求的单行箭头函数形式,且因为你明确数组长度始终为偶数,不需要额外处理边界情况:
方案1:使用Array.from实现
const pairArray = arr => Array.from({ length: arr.length / 2 }, (_, idx) => [arr[idx], arr[arr.length - idx - 1]]); // 测试用例 console.log(pairArray([0,1,2,3,4,5])) // 输出 [[0,5],[1,4],[2,3]]
原理是直接构造一个长度为原数组一半的新数组,每个位置直接取对应索引的首尾元素配对。
方案2:使用slice+map实现
const pairArray = arr => arr.slice(0, arr.length / 2).map((val, idx) => [val, arr[arr.length - idx - 1]]); // 测试用例 console.log(pairArray([0,1,2,3,4,5])) // 输出 [[0,5],[1,4],[2,3]]
原理是先截取原数组的前半段,再遍历前半段的每个元素和对应的后半段逆序元素配对。
补充说明
- 如果你追求极致运行性能,你原来的for循环写法是最优的,没有额外的函数调用开销,在数组长度特别大的时候性能优势明显。
- 上述两种简洁写法在常规业务场景的数组长度下,性能差异几乎可以忽略,代码更短可读性也更好,可以按需选择。
内容的提问来源于stack exchange,提问作者skyline33
相关产品推荐
相关产品推荐

