最近在做一个xml配置的功能,在跟树形结构、xml结构和json结构的数据打交道,要把这三种结构进行互相转换,总的来都是对象,见招拆招,可根据实际情况灵活改变呦,本文列举基本招式。
招式一:深度遍历对象
function processCharacter(obj) {
if (typeof obj[i] === 'object') {
processCharacter(obj[i]);
} else {
obj[i] = obj[i]
}
}
复制代码
招式二:修改/获取嵌套对象的某个路径的值
function editFn(path, value, obj) {
const arr = path;
const len = arr.length - 1;
arr.reduce((cur, key, index) => {
if (!(cur[key]) && typeof cur[key] != 'string')
throw `${key} 不存在!`
if (index === len) {
cur[key] = value
}
return cur[key]
}, obj)
return obj
}
复制代码
招式三:两个对象取交集
function common(object1, object2) {
return Object.assign(...Object.keys(object1).map(k => {
var temp;
if (!(k in object2)) {
return {};
}
if (object1[k] && typeof object1[k] === 'object' &&
object2[k] && typeof object2[k] === 'object') {
temp = common(object1[k], object2[k]);
return Object.keys(temp).length ? { [k]: temp } : {};
}
if (object1[k] === object2[k]) {
return { [k]: object1[k] };
}
return {};
}));
}
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END