在 JavaScript 中分配对象和嵌套对象的值

Assign value of object and nested object in JavaScript

所以,基本上,我有这个对象(在 vue data() 中):

...
detail: {
  title: 'I have no idea',
  date: 2020-02-12,
  sender: {
    name: 'John Cenna',
    username: 'john10'
  },
  receipent: {
    name: 'Katleen',
    username: 'katmeow'
  },
  ....
}

现在,我想将它们全部指定为空(用于验证过程,某种程度上)但无法指定嵌套对象(没有子对象的对象只需循环即可)。我该怎么做呢?谢谢

一个递归的解决方案:

  1. 使用Object.entries()迭代对象的键值条目如下。请注意 Object.entries() return 是非对象的空数组。
  2. 如果条目的值已经是 nullundefined,return。
  3. 如果条目的值是数组,则对每个数组项进行递归(转到步骤 1,将数组项作为要计算的新对象)。
  4. 如果条目的值是一个对象,则对该对象进行递归。
  5. 否则,将条目的值设置为 null

const data = {
  detail: {
    title: 'I have no idea',
    date: 2020 - 02 - 12,
    sender: {
      name: 'John Cenna',
      username: 'john10'
    },
    receipent: {
      name: 'Katleen',
      username: 'katmeow'
    },
    items: [
      { id: 100, name: 'Apple' },
      { id: 200, name: 'Banana' },
      { id: 300, name: 'Orange' },
    ]
  }
}

function nullify(obj) {
  // 1
  Object.entries(obj).forEach(([k,v]) => {
    // 2
    if (v === null || v === undefined) {
      return
    }
    // 3
    if (Array.isArray(v)) {
      return v.forEach(nullify)
    }

    // 4
    if (typeof v === 'object') {
      nullify(obj[k])
    } else {
      // 5
      obj[k] = null
    }
  })
}

nullify(data.detail)
console.log('res', data.detail)