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

JavaScript中如何将双层括号嵌套数组转为单层括号数组?

问题原因

你代码里写的ii.push(d),是把整个d数组当成单个元素塞进了空数组ii,所以最后得到的ii是双层嵌套结构[[" ", " ", ...]],长度只有1,不是你要的长度为10的单层数组。

实现方法

根据你当前的开发阶段选对应方案就行:

方案1:改push写法,从根源避免嵌套

不用后续额外做扁平化处理,写代码的时候直接把d里的元素逐个追加到ii里就行,用展开运算符实现:

let ii: any[] = [];
const i = ' '.repeat(10);
const d = i.split('');
// 展开d的所有元素逐个push,不会生成嵌套结构
ii.push(...d);
console.log(ii, ii.length); // 输出长度为10的单层目标数组
console.log(d, d.length);

方案2:扁平化已经生成的嵌套数组

如果你已经拿到了双层嵌套的ii,选下面任意一种方法都能转成单层:

  • 直接取第一个元素:你这个场景下ii里只有一个元素,就是你要的单层数组,直接写const res = ii[0]就行,性能最高
  • 用原生flat方法:通用性更强,拍平1层嵌套写const res = ii.flat(1),如果以后可能出现更深层的嵌套,直接传Infinity就能完全拍平到单层:const res = ii.flat(Infinity)
  • 用concat合并:const res = [].concat(...ii),同样可以把一层嵌套拍平

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:21:38