Skip to content

深拷贝的循环引用问题

解析

ts
function deepClone(value) {
  if (typeof value !== 'object' || value === null) {
    return value;
  }
  const map = new Map();
  function _deepClone(value) {
    const result = Array.isArray(value) ? [] : {};

    if (cache.has(value)) {
      return cache.get(value);
    }

    cache.set(value, result);

    for (const key in value) {
      result[key] = _deepClone(value[key]);
    }

    return result;
  }

  return _deepClone(value);
}