二维数组为extended(不创建新数组):

let array:number[][] = [
    [5, 6],
];

为此,我们还有两个二维数组a1a2:

let a1:number[][] = [[1, 2], [3, 4]];
let a2:number[][] = [[7, 8], [9, 10]];

现在的目标是在array开头插入a1,在array结尾插入a2:

array.unshift(a1);
array.push(a2);

不允许使用该语法,并出现以下错误:

Argument of type 'number[][]' is not assignable to parameter of type 'number[]'.
Type 'number[]' is not assignable to type 'number'.

预期结果如下:

[
    [1, 2],
    [3, 4],
    [5, 6],
    [7, 8],
    [9, 10]
];

是否提供了一种插入数组的方法,而无需逐个元素迭代和取消移位/推送?

Please not:个 由于现有数组可能会变得非常大,我希望避免复制(例如,通过连接或类似的方式).

推荐答案

你就快到了.你只需要用spread syntax元就可以了.

let array: number[][] = [[5, 6]];

let a1: number[][] = [
  [1, 2],
  [3, 4],
];
let a2: number[][] = [
  [7, 8],
  [9, 10],
];

array.unshift(...a1);
array.push(...a2);

console.log(array);
// [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]] 

TypeScript Playground

Javascript相关问答推荐

在JavaScript中对大型级联数组进行切片的最有效方法?

将数据从strapi提取到next.js,但响应延迟API URL

我不知道为什么我的JavaScript没有验证我的表单

如何在Javascript中的控制台上以一行形式打印循环的结果

在网页上添加谷歌亵渎词

如何在Javascript中使用Go和检索本地托管Apache Arrow Flight服务器?

Promise Chain中的第二个useState不更新

如何在模块层面提供服务?

您能在卸载程序(QtInsteller框架)上添加WizardPage吗?

未定义引用错误:未定义&Quot;而不是&Quot;ReferenceError:在初始化&Quot;之前无法访问';a';

禁用.js文件扩展名并从目录导入隐式根index.js时,找不到NodeJS导入模块

未加载css colored颜色 ,无法将div设置为可见和不可见

为什么可选参数的顺序会导致问题?

如何限制显示在分页中的可见页面的数量

Reaction-SWR-无更新组件

使用Document.Evaluate() Select 一个包含撇号的HTML元素

Firefox的绝对定位没有达到预期效果

我如何才能让p5.js在不使用实例模式的情况下工作?

如何缩小函数中联合返回类型的范围

我如何让我的弹力球在JavaScript和HTML画布中相互碰撞后改变 colored颜色 ?