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