一维数组转为多维
function convertToMultiDimensionalArray(arr) {
var map = {};
var roots = [];
// 将数组元素以ID为键,构建一个映射表
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
item.children = [];
map[item.id] = item;
var parentId = item.parentId;
if (parentId in map) {
map[parentId].children.push(item);
} else {
roots.push(item);
}
}
return roots;
}
var arr = [
{ id: 1, name: "A", parentId: null },
{ id: 2, name: "B", parentId: 1 },
{ id: 3, name: "C", parentId: 1 },
{ id: 4, name: "D", parentId: 2 },
{ id: 5, name: "E", parentId: 2 },
{ id: 6, name: "F", parentId: 3 }
];
var multiDimensionalArray = convertToMultiDimensionalArray(arr);
console.log(multiDimensionalArray);
在上面的例子中,假设对象有 id、name 和 parentId 属性。我们首先创建一个映射表 map,将每个对象的 id 作为键,然后根据 parentId 将对象连接到其相应的父对象的 children 数组中。如果 parentId 不存在于映射表中,则将该对象视为根元素,并添加到 roots 数组中。最后,返回根元素数组 roots

浙公网安备 33010602011771号