JavaScript:在二维数组子数组倒数两元素间插入6个空值
解决方案
要实现在每个子数组的倒数两个元素之间插入6个空字符串,你可以通过分割子数组并拼接的方式完成,以下是几种可行的实现方式:
方法一:slice + 扩展运算符(最直观)
这种方式通过分割子数组的前半部分、空字符串数组、后半部分(最后两个元素),再将三者拼接,不会修改原数组:
const array1 = [[8,1,2,3,1],[3,1,1,1],[4,2,1]]; const emptyArr = new Array(6).fill(''); const result = array1.map(subArr => { // 截取前n-2个元素 + 空字符串数组 + 最后2个元素 return [...subArr.slice(0, -2), ...emptyArr, ...subArr.slice(-2)]; }); console.log(result);
方法二:slice + concat(兼容性更好)
如果需要兼容不支持扩展运算符的环境,可以用concat替代:
const array1 = [[8,1,2,3,1],[3,1,1,1],[4,2,1]]; const emptyArr = new Array(6).fill(''); const result = array1.map(subArr => { return subArr.slice(0, -2) .concat(emptyArr) .concat(subArr.slice(-2)); }); console.log(result);
方法三:splice 插入(需复制原数组)
splice方法可以直接在指定位置插入元素,但注意要先复制子数组,避免修改原数组:
const array1 = [[8,1,2,3,1],[3,1,1,1],[4,2,1]]; const emptyArr = new Array(6).fill(''); const result = array1.map(subArr => { const subCopy = [...subArr]; // 复制原数组,防止修改原数据 // 在倒数第二个元素的位置插入空字符串数组 subCopy.splice(-2, 0, ...emptyArr); return subCopy; }); console.log(result);
效率对比
- 前两种方法(slice+扩展/concat)逻辑清晰,都是生成新数组,不会产生副作用,性能表现稳定,适合大多数场景。
splice方法需要先复制数组,对于超大数组来说,内存占用会略高一点,但日常使用中差异可以忽略。
推荐优先使用方法一,代码简洁易读,且符合现代JavaScript的写法习惯。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

