我是靠谱客的博主 朴实口红,最近开发中收集的这篇文章主要介绍【tree-3】在deepClone的过程中变更树的单个节点值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在深拷贝的过程中变更单个节点值

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的过程中变更树的单个节点值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部