【问题标题】:How can I clone an object and set every properties value to null?如何克隆对象并将每个属性值设置为 null?
【发布时间】:2015-03-28 15:42:03
【问题描述】:

根据标题,我需要在 Javascript 中克隆一个对象,如下所示,并将每个值设置为零。当然对象属性可以改变。

  { _id: { action: null, date: null },
    avg: null,
    min: null,
    max: null,
    total: null }

【问题讨论】:

  • 您的意思是遍历每个可用属性并将其设置为 null 吗?
  • 说明不清楚
  • 您必须指的是每个 known 属性,而不是 unknown,因为将无限数量的属性设置为 null 可能会使您的 CPU 爆炸。
  • 是的,正是 atmd 所说的
  • 你为什么要这样做?我不敢相信这是实现任何目标的最佳方法。

标签: javascript object clone


【解决方案1】:
// helper method to get the correct object type
function toType(x) {
  return ({}).toString.call(x).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}

// recursive function that sets all properties to null
// except objects which it passes back into the reset function
function reset(obj) {

  // clone the object
  var out = JSON.parse(JSON.stringify(obj));
  for (var p in out) {
    if (toType(out[p]) === 'object') {
      reset(out[p]);
    } else {
      out[p] = null;
    }
  }
  return out;
}

reset(obj);

DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-08
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 2015-02-08
    • 2015-09-16
    相关资源
    最近更新 更多