处理对象的招式

最近在做一个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
喜欢就支持一下吧
点赞0 分享