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
相关产品推荐
相关产品推荐

