数组转对象的方法 数组转树状结构 对象转数组
const arr = [{label: '男', value: 0},{label: '女', value: 1}]
function f(arr) {
let obj = {};
for (var item in arr){
obj[arr[item].value] = arr[item].label;
};
return obj
}
const obj = f(arr)
console.log(obj);
let arr = [{
name: 'dr',
ct: 'dr001'
},
{
name: 'ljy',
ct: 'ljy002'
}]
let obj = {}
arr.forEach(item=> {
obj[item.name] = item.ct
})
console.log('obj', JSON.stringify(obj, null, 2));
对象转数组的方法
方法一
const obj = { 0: '男', 1:'女'}
function f(obj) {
let arr=[]
for (const key in obj) {
arr.push({label:obj[key],value:key})
}
return arr
}
const arr = f(obj)
console.log(arr);
数组转树状结构
const data = [{
id: "01",
name: "张大大",
pid: "",
job: "项目经理"
},
{
id: "02",
name: "小亮",
pid: "01",
job: "产品leader"
},
{
id: "03",
name: "小美",
pid: "01",
job: "UIleader"
},
{
id: "04",
name: "老马",
pid: "01",
job: "技术leader"
},
{
id: "05",
name: "老王",
pid: "01",
job: "测试leader"
},
{
id: "06",
name: "老李",
pid: "01",
job: "运维leader"
},
{
id: "07",
name: "小丽",
pid: "02",
job: "产品经理"
},
{
id: "08",
name: "大光",
pid: "02",
job: "产品经理"
},
{
id: "09",
name: "小高",
pid: "03",
job: "UI设计师"
},
{
id: "10",
name: "小刘",
pid: "04",
job: "前端工程师"
},
{
id: "11",
name: "小华",
pid: "04",
job: "后端工程师"
},
{
id: "12",
name: "小李",
pid: "04",
job: "后端工程师"
},
{
id: "13",
name: "小赵",
pid: "05",
job: "测试工程师"
},
{
id: "14",
name: "小强",
pid: "05",
job: "测试工程师"
},
{
id: "15",
name: "小涛",
pid: "06",
job: "运维工程师"
}
]
function arrToTree(data) {
let result = []
if (!Array.isArray(data)) {
return result
}
data.forEach(item => {
delete item.children;
});
let map = {};
data.forEach(item => {
map[item.id] = item;
});
data.forEach(item => {
let parent = map[item.pid];
if (parent) {
(parent.children || (parent.children = [])).push(item);
} else {
result.push(item);
}
});
return result;
}
const treeData = arrToTree(data)
console.log(treeData);
export function tranListToTreeData(list) {
const treeList = []
const map = {}
list.forEach(item => {
if (!item.children) {
item.children = []
}
map[item.id] = item
})
list.forEach(item => {
const parent = map[item.pid]
if (parent) {
parent.children.push(item)
} else {
treeList.push(item)
}
})
return treeList
}
树状结构转一维数组
function treeToArray(tree) {
const obj = []
tree.forEach((item) => {
if (item.children) {
obj.push( item, ...item.children )
Reflect.deleteProperty(item,'children')
} else {
obj.push(item)
}
})
return obj
}
console.log(treeToArray(tree))