数据格式转换方法
- 将数组转为tree树状结构
//数据格式如下 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: '运维工程师' } ] //定义一个函数 设置两个形参 第一个参数为要转变为tree的数组 //第二个参数为树根(最高的一级) //filter 筛选出最高的一级 map将此级展开到原地,并给此对象设置children属性,属性值就为下次执行的结果,下次执行时第二个参数为上一次对象的id,便可和pid对比找到分支 function changeTree(list,pid=''){ return list .filter((obj) => obj.pid === pid) .map((obj) => ({ ...obj, children: changeTree(list, obj.id), })) } console.log(changeTree(data)); //输出结果为: [{ label: '张大大', children: [ { label: '小亮', children: [{label: '小丽'},{label: '大光'}] }, { label: '小美', children: [{label: '小高'}] }, { label: '老马', children: [{label: '小刘'},{label: '小华'},{label: '小李'}] }, { label: '老王', children: [{label: '小赵'},{label: '小强'}] }, { label: '老李', children: [{label: '小涛'}] } ] }]
-
将数组转为对象
//数组如下: let arr = [{label:'男',value: 1}, {label:'女',value: 0}] let obj2 = {} function f(arr) { //循环数组 将对象中的值装进新的对象中 以键值对形式保存 arr.forEach(obj=>{ obj2[obj.value] = obj.label }) return obj2 } console.log(f(arr)) //打印结果 // obj2 = {'0': '女', '1': '男'}
-
将数组对象中的值,取出来装进新的数组里使用
//数组如下: let arr0 = [{label:'男',value: 1}, {label:'女',value: 0}] let arr2 = [] function f2(arr) { //遍历数组 将每个对象中的值 追加到新的数组中去 arr.forEach(obj=>{ arr2.push(obj.label) }) return arr2 } console.log(f2(arr0)) //打印结果 // arr2 = ['男', '女']
-
遍历对象并将值存入数组
//数组如下: var obj4 = {label:'男',value: 1,age: 18} let arr4 = [] function f5(obj) { for(let key in obj){ //这里要用obj[key] 不能用obj.key arr4.push(obj[key]) } return arr4 } console.log(f5(obj4)) //打印结果 // arr = ['男', '1', '18'] // 所有的属性值取出来,保存在数组中
-
将对象转为key=值&key=值格式
//定义一个对象: let obj5 = { id: '01', name: '张大大', pid: '', job: '项目经理' } //方法一 let str = '' //声明空字符串 for (let key in obj5) { str += key + '=' + obj5[key] + '&' } //截取字符串 str = str.slice(0, str.length - 1) console.log(str) //打印结果: // id=01&name=张大大&pid=&job=项目经理 //方法二: let arr5 = [] for (let key in obj5) { arr5.push(`${key}=${obj5[key]}`) } let str1 = arr5.join('&') console.log(str1) //打印结果: // id=01&name=张大大&pid=&job=项目经理
-
将key=值&key=值格式转为对象
let str = 'id=01&name=张大大&pid=&job=项目经理' let arr6 = str.split('&') //分割字符串 let obj6 = {} arr6.forEach(function(item) { item = item.split('=') obj6[item[0]] = item[1] }) console.log(obj6) //打印结果: //{ id: '01', name: '张大大', pid: '', job: '项目经理' }