如何动态创建子数组?将元素放入独立子数组
如何将变量推入数组的独立子数组中
当前输出:[set1, set2, set3]
期望输出:[[set1], [set2], [set3]]
假设已有变量set1、set2、set3,以及空数组:
arr = [];
已知执行array.push(set1, set2, set3);后,console.log(arr)会得到[set1, set2, set3],但希望每个变量都处于独立子数组中。尝试过array[pos].push(set1)时触发TypeError (Cannot read properties of undefined)错误,用tempArray.splice(tempArray[pos], 0, set1);也没能得到目标结果,以下是几种正确实现方式:
方法1:推入时直接包裹为子数组
最直接的方式,在push操作时把每个变量放进新数组里:
arr.push([set1], [set2], [set3]);
执行后console.log(arr)即可得到[[set1], [set2], [set3]]。
方法2:先初始化子数组再添加元素
如果需要分步处理(比如在循环场景中),要先确保子数组存在,再往里面添加元素:
// 处理set1 arr.push([]); // 先添加一个空的子数组 arr[arr.length - 1].push(set1); // 向最后一个子数组中添加元素 // 同理处理set2和set3 arr.push([]); arr[arr.length - 1].push(set2); arr.push([]); arr[arr.length - 1].push(set3);
这种方式避免了直接操作未定义子数组导致的报错。
方法3:用map批量转换(变量为数组集合时)
如果变量本身是一个数组集合,比如const sets = [set1, set2, set3];,可以用map快速生成目标二维数组:
const sets = [set1, set2, set3]; const arr = sets.map(item => [item]);
内容的提问来源于stack exchange,提问作者MBWD
相关产品推荐
相关产品推荐

