前言
提示:下面案例可供参考
假设,我们从后端取回来的Json对象数据中,有某些属性名不是我们想要的,就需要给它们重新命名。例如:把数组里的label转换成name
const info = [ { label: '一级 1', children: [{ label: '二级 1-1', children: [{ label: '三级 1-1-1' }] }]
},
{
label: '一级 2',
children: [
{ label: '二级 2-1', children: [{ label: '三级 2-1-1' }] },
{ label: '二级 2-2', children: [{ label: '三级 2-2-1' }] }
]
},
{
label: '一级 3',
children: [
{ label: '二级 3-1', children: [{ label: '三级 3-1-1' }] },
{ label: '二级 3-2', children: [{ label: '三级 3-2-1' }] }
]
}
];
第一种方法 使用数组的map方法
const oneMap = obj => {
let arr = [];
// eslint-disable-next-line array-callback-return
obj.map(item => {
let obj = {
name: '',
children: []
};
obj.name = item.label;
if (item.children && item.children.length > 0) {
obj.children = oneMap(item.children);
// item.children
}
arr.push(obj);
});
return arr;
};
console.log(oneMap(info));
打印结果
第二种方法
JSON.parse(JSON.stringify(info).replace(/label/g,'name'))
说明:
JSON.stringify()把json对象 转成 json字符串- 使用正则的
replace()方法替换属性名 JSON.parse()再把json字符串 转成 json对象