arr.flat(Infinity)
arr.toString().split(',').map((item) => Number(item));
arr.reduce((total, item) => (Array.isArray(item) ? [...total, ...flat(item)] : [...total, item]),[],);
- //数据
- const treeData = [
- {
- title: '0-0',
- key: '0-0',
- children: [
- {
- title: '0-0-0',
- key: '0-0-0',
- children: [
- { title: '0-0-0-0', key: '0-0-0-0' },
- { title: '0-0-0-1', key: '0-0-0-1' },
- { title: '0-0-0-2', key: '0-0-0-2' },
- ],
- },
- {
- title: '0-0-1',
- key: '0-0-1',
- children: [
- { title: '0-0-1-0', key: '0-0-1-0' },
- { title: '0-0-1-1', key: '0-0-1-1' },
- { title: '0-0-1-2', key: '0-0-1-2' },
- ],
- },
- {
- title: '0-0-2',
- key: '0-0-2',
- },
- ],
- },
- {
- title: '0-1',
- key: '0-1',
- children: [
- { title: '0-1-0-0', key: '0-1-0-0' },
- { title: '0-1-0-1', key: '0-1-0-1' },
- { title: '0-1-0-2', key: '0-1-0-2' },
- ],
- },
- {
- title: '0-2',
- key: '0-2',
- },
- ];
-
- //方法函数
- const treeToArray = (tree) => {
- const result = [];//1.声明result保存转化后的数组
- tree.forEach((item) => {
- result.push({ ...item, children: null });//2.把第一层数组元素push到result中
- item.children && result.concat(treeToArray(item.children));//3.如果存在子元素,就开始递归、拼接数组
- });
- return result;
- };
-
- //输出返回值
- console.log(treeToArray(treeData));
- //数据
- const ArrayData = [
- { title: '0-0', key: '0-0', parentKey: '' },
- { title: '0-1', key: '0-1', parentKey: '' },
- { title: '0-2', key: '0-2', parentKey: '' },
- { title: '0-0-0', key: '0-0-0', parentKey: '0-0' },
- { title: '0-0-1', key: '0-0-1', parentKey: '0-0' },
- { title: '0-0-2', key: '0-0-2', parentKey: '0-0' },
- { title: '0-1-0-0', key: '0-1-0-0', parentKey: '0-1' },
- { title: '0-1-0-1', key: '0-1-0-1', parentKey: '0-1' },
- { title: '0-1-0-2', key: '0-1-0-2', parentKey: '0-1' },
- { title: '0-0-0-0', key: '0-0-0-0', parentKey: '0-0-0' },
- { title: '0-0-0-1', key: '0-0-0-1', parentKey: '0-0-0' },
- { title: '0-0-0-2', key: '0-0-0-2', parentKey: '0-0-0' },
- { title: '0-0-1-0', key: '0-0-1-0', parentKey: '0-0-1' },
- { title: '0-0-1-1', key: '0-0-1-1', parentKey: '0-0-1' },
- { title: '0-0-1-2', key: '0-0-1-2', parentKey: '0-0-1' },
- ];
-
- //方法
- const arrayToTree = (tree: any[]) => {
- let result = []; //返回的树结构
- let treeMap = {}; //用传进来的每个项的id作为键值,建立一棵树
- tree.forEach((item) => {
- item.children = [];
- treeMap[item.key] = item; //浅拷贝,共享引用
- });
- tree.forEach((item) => {
- if (item.parentKey === '') {
- result.push(item);
- } else {
- treeMap[item.parentKey].children.push(item);//修改treeMap的值,result中的值也会随之变化。因为他们复制的是tree的地址(引用类型)。
- }
- });
- return result; // result 转化后的树形结构数据
- };
-
- //输出
- console.log(arrayToTree(ArrayData));