概述
在深拷贝的过程中变更单个节点值
function changeTree(source: Object, map = new Map()): any {
//空、null和基本数据类型不用递归
if (source === null || source === {} || source === [] || typeof source !== 'object') {
return source;
}
let newObject: any;
let isArray = false;
if (Array.isArray(source)) {
newObject = [];
isArray = true;
} else {
newObject = {};
isArray = false;
}
//防止循环引入
if (map.get(source)) {
return map.get(source);
}
map.set(source, newObject);
//数组和对象都有key,数组是下标
for (const key of Object.keys(source)) {
const sub = typeof (source as any)[key] === 'object' ? changeTree((source as any)[key], map) : (source as any)[key];
if (isArray) {
newObject.push(sub);
} else {
newObject[key] = sub;
//trip
if (key === 'xxx') {
newObject.label = sub;
}
}
}
return newObject;
}
最后
以上就是朴实口红为你收集整理的【tree-3】在deepClone的过程中变更树的单个节点值的全部内容,希望文章能够帮你解决【tree-3】在deepClone的过程中变更树的单个节点值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复