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

TypeScript新手求助:将一维数组与变量转换为二维数组

TypeScript 数组组合问题解决方法

你的代码问题分析

  1. 变量名拼写错误:你代码里用的userList应该是定义好的nameList,insertID对应postId,这会直接导致找不到变量的错误。
  2. 核心逻辑错误:newList初始是空数组,循环中newList[i]还未被创建(值为undefined),直接访问newList[i][0]或者赋值会触发Cannot set properties of undefined的错误。

正确解法

解法1:修正for循环

先创建子数组再赋值,或者先初始化子数组后填充内容:

let nameList: string[] = ['a', 'b', 'c', 'd'];
let postId: number = 1;
let newList: (string | number)[][] = [];

// 写法A:直接push子数组
for (let i: number = 0; i < nameList.length; i++) {
  newList.push([nameList[i], postId]);
}

// 写法B:先初始化子数组再赋值
// for (let i: number = 0; i < nameList.length; i++) {
//   newList[i] = [];
//   newList[i][0] = nameList[i];
//   newList[i][1] = postId;
// }

解法2:使用Array.map()(更简洁)

利用数组的map方法,遍历原数组的每个元素,返回包含当前元素和postId的子数组:

let nameList: string[] = ['a', 'b', 'c', 'd'];
let postId: number = 1;
let newList: (string | number)[][] = nameList.map(name => [name, postId]);

执行后newList就会得到你想要的结果:

[
  ['a',1],
  ['b',1],
  ['c',1],
  ['d',1]
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 10:27:44