TypeScript新手求助:将一维数组与变量转换为二维数组
TypeScript 数组组合问题解决方法
你的代码问题分析
- 变量名拼写错误:你代码里用的
userList应该是定义好的nameList,insertID对应postId,这会直接导致找不到变量的错误。 - 核心逻辑错误:
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
相关产品推荐
相关产品推荐

