/**
*
* @param {Array} arrs 树形数据
* @param {string} childs 树形数据子数据的属性名,常用'children'
* @param {Array} attrArr 需要提取的公共属性数组(默认是除了childs的全部属性)
* @returns
*/
extractTree(arrs, childs = 'children', attrArr) {
let attrList = []
if (!Array.isArray(arrs) && !arrs.length) return []
if (typeof childs !== 'string') return []
if (!Array.isArray(attrArr) || Array.isArray(attrArr) && !attrArr.length) {
attrList = Object.keys(arrs[0])
attrList.splice(attrList.indexOf(childs), 1)
} else {
attrList = attrArr
}
const list = []
const getObj = (arr) => {
arr.forEach(function(row) {
const obj = {}
attrList.forEach(item => {
obj[item] = row[item]
})
list.push(obj)
if (row[childs]) {
getObj(row[childs])
}
})
return list
}
return getObj(arrs)
},
js树结构扁平化
Ciwei蓝2023-11-14 11:55
相关推荐
天下无贼!13 分钟前
2024年最新版Vue3学习笔记Jiaberrr13 分钟前
JS实现树形结构数据中特定节点及其子节点显示属性设置的技巧(可用于树形节点过滤筛选)赵啸林16 分钟前
npm发布插件超级简单版我码玄黄1 小时前
THREE.js:网页上的3D世界构建者罔闻_spider1 小时前
爬虫----webpack吱吱鼠叔1 小时前
MATLAB数据文件读写:1.格式化读写文件爱喝水的小鼠1 小时前
Vue3(一) Vite创建Vue3工程,选项式API与组合式API;setup的使用;Vue中的响应式ref,reactive小晗同学1 小时前
Vue 实现高级穿梭框 Transfer 封装WeiShuai1 小时前
vue-cli3使用DllPlugin优化webpack打包性能Wandra1 小时前
很全但是超级易懂的border-radius讲解,让你快速回忆和上手