概述
下面一段程序供参考, 层级多深都能支持。
解释下这里用for不用forEach的原因,for在当前循环判断生效后,往arr添加后面添加子项,并会影响到下次循环,而forEach则不然。本来for的这个特性是个缺陷,ES5 forEach的出现也是为了弥补这个缺陷,但是事无绝对,用得好就是优势。
for(let item of arr) {
if(item.children) {
arr = arr.concat(item.children);
delete item.children
}
}
console.log(arr);
如果要求保持顺序, 下面代码参考下
for(let i=0; i < arr.length ; i++) {
if(arr[i].children) {
arr = arr.slice(0,i+1).concat(arr[i].children,arr.slice(i+1))
delete arr[i].children
}
}
console.log(arr);
PS:能用循环解决的问题,就不要用递归,如果层次太深,内存吃不消不说,还有可能调用栈溢出,程序崩溃。
由于题主是图片, 测试代码我也贴一下吧:
let arr = [
{
a:1,
b:2,
c:3,
children: [
{
id:1,
a: 1-1,
b: 1-2,
c: 1-3
},
{
id: 2,
a: 1-1,
b: 1-2,
c: 1-3,
children: [
{
id:3,
a: 1-1,
b: 1-2,
c: 1-3,
children: [
{
id: 4,
a: 1-1,
b: 1-2,
c: 1-3
}
]
}
]
}
]
},
{
a: 2-1,
b: 2-2,
children: []
}
]
最后
以上就是老迟到猎豹为你收集整理的python二维数组转一维_js将二维数组对象转化为一维数组对象的全部内容,希望文章能够帮你解决python二维数组转一维_js将二维数组对象转化为一维数组对象所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复