JavaScript:深层复制和清除对象

时间:2017-06-29 15:24:59

标签: javascript object ecmascript-6 copy babel

如果你和我在同一个案例中,只需分享一段可能有用的代码。当你的对象包含函数时要小心,它们也会被清除(在我的情况下,我没有任何功能,所以我没有真正管理过这个案例)!

在我的情况下,我需要(深度)复制JSON对象以在数据库中创建许多国际化文档(MongoDB)(对于每种语言,~15)。翻译人员将能够填写新的空JSON,然后我将能够计算进度以了解翻译是否以100%完成。

我在这里发布代码,以了解ES6-7中是否有更好的解决方案(它是生产代码和应用程​​序的一个非常重要的部分),或者是同时深度复制和清除的不同方法。

1 个答案:

答案 0 :(得分:0)

这是我的解决方案:

const obj = {
  champ1: 'test',
  champ2: 'test',
  champ3: {
      ch: 'test',
      test: 'test'
  }
}

function copyAndClearObject (obj) {
  if (!obj) return
  
  let json = {}

  for (const [key, value] of Object.entries(obj)) {
    if (value instanceof Object) {
      json[key] = copyAndClearObject(value)
    } else {
      json[key] = null
    }
  }

  return json
}

console.log(copyAndClearObject(obj))