JavaScript

deepClone

javascript,object,recursion,intermediate

Creates a deep clone of an object. Đọc thêm Deep Clone Object

Sử dụng phương pháp đệ quy. Check nếu object khác null và, nếu là null thì return null. Sử dụng Object.assign() và cách tạo một object rỗng ({}) để tạo một shallow object từ object gốc. Sử dụng Object.keys()Array.prototype.forEach().


const deepClone = obj => {
  if (obj === null) return null;
  let clone = Object.assign({}, obj);
  Object.keys(clone).forEach(
    key => (clone[key] = typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key])
  );
  return Array.isArray(obj) && obj.length
    ? (clone.length = obj.length) && Array.from(clone)
    : Array.isArray(obj)
      ? Array.from(obj)
      : clone;
};
EXAMPLES
const a = { foo: 'bar', obj: { a: 1, b: 2 } };
const b = deepClone(a); // a !== b, a.obj !== b.obj

Recommended snippets

Đăng ký nhận bản tin về "Học code 30 seconds"