JS如下数据的二维数组怎么转成带children的多重数组?

数组一:(不限制长度)

[
        ["1", "1-1", "1-1-2"],
        ["1", "1-1", "1-1-3", "1-1-3-1"],
        ["2", "2-4", "2-4-1"],
        ["2", "2-5", "2-5-3"]
]

转换成

数组二:

[
	{
		code: "1",
		children: [
			{
				code: "1-1",
				children: [
					{
						code: "1-1-2",
						children: []
					},
					{
						code: "1-1-3",
						children: [
							{
								code: "1-1-3-1",
								children: []
							}
						]
					}
				]
			}
		]
	},
	{
		code: "2",
		children: [
			{
				code: "2-4",
				children: [
					{
						code: "2-4-1",
						children: []
					}
				]
			},
			{
				code: "2-5",
				children: [
					{
						code: "2-5-3",
						children: []
					}
				]
			}
		]
	}
]

实现方法:

function composeTree(list = [], parentIndex, parentValue) {
	var arr = [];
	var check = []
	list.forEach(item => {
		if (item.length >= parentIndex + 1) {
			if (check.indexOf(item[parentIndex]) < 0 && (parentValue == 0 || item[parentIndex - 1] == parentValue)) {
				var obj = {};
				obj.code = item[parentIndex];
				obj.children = composeTree(list, parentIndex + 1, item[parentIndex]);
				arr.push(obj);
			}
		}
		check.push(item[parentIndex]);
	})
	return arr;
}

感谢朋和晋提供帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yongqiang Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值