JS处理数据为树形结构

本篇文章介绍在处理省市区等数组数据为树形结构,诸如此类数据处理方法。
比如将如下数据处理为树形结构:

var data = []
data.push({ id: -1, parent: null, name: 'root' })
for (var i = 0; i < 100; i++) {
    data.push({ id: i, parent: i % 10 != i ? i % 10 : -1, name: 'name' + i })
}

方法一 递归实现

function treeData(list, rootValue) {
	var arr = []
	list.forEach(item => {
		if (item.parent === rootValue) {
			const children = treeData(list, item.id)
			if (children.length) {
				item.children = children
			}
			arr.push(item)
		}
	})
	return arr
}

方法二 数组高阶方法filter

var bfs = function (data) {
	var arr = []
	for (var i = 0; i < data.length; i++) {
		arr.push(data[i].id)
		if (data[i].children && data[i].children.length > 0) {
			data.push(...data[i].children)
		}
	}
	return arr
}

你可能感兴趣的:(JavaScript常规编程题,javascript,回归)