You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何快速将二维矩阵的行截断至指定长度?

需求与解决方案

原二维数组

array = [
[11,22,33,44],
[66,26,73,94,67,89,22],
[21,55,23,77,43,99,99,3,6]
]

需求

实现一个函数,传入指定长度n后,返回每行长度均为n的二维数组。例如n=3时,输出应为:

array = [
[11,22,33],
[66,26,73],
[21,55,23]
]

问题代码

你尝试的代码因手动固定元素索引,无法适配任意n的需求:

for(i=0;i<array.length;i++)
{
 newarray.push([array[i][0], array[i][0],array[i][1]])
}

console.log(newarray)

快速实现方法

简洁版(推荐)

利用数组原生的map和slice方法,一行逻辑即可完成:

function trimArrayToLength(arr, n) {
  return arr.map(row => row.slice(0, n));
}

// 调用示例
const array = [
[11,22,33,44],
[66,26,73,94,67,89,22],
[21,55,23,77,43,99,99,3,6]
];

const result = trimArrayToLength(array, 3);
console.log(result);
  • map遍历原数组的每一行
  • slice(0, n)直接截取每行的前n个元素;若原行长度小于n,则返回完整原行(无需额外判断)

兼容老环境的循环版

如果需要适配不支持箭头函数的旧环境,可以用普通循环实现:

function trimArrayToLength(arr, n) {
  const newArray = [];
  for (let i = 0; i < arr.length; i++) {
    const trimmedRow = [];
    const currentRow = arr[i];
    // 循环截取前n个元素,同时避免超出原行长度
    for (let j = 0; j < n && j < currentRow.length; j++) {
      trimmedRow.push(currentRow[j]);
    }
    newArray.push(trimmedRow);
  }
  return newArray;
}

内容的提问来源于stack exchange,提问作者Code Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:15:34