javascript - JavaScript 中对象和嵌套对象的赋值
问题描述
所以,基本上,我有这个对象(在 vue data() 中):
...
detail: {
title: 'I have no idea',
date: 2020-02-12,
sender: {
name: 'John Cenna',
username: 'john10'
},
receipent: {
name: 'Katleen',
username: 'katmeow'
},
....
}
现在,我想将它们全部分配为空(用于验证过程,有点),但无法分配嵌套对象(没有子对象的对象只需循环即可)。我该怎么做呢?谢谢你
解决方案
递归解决方案:
- 用于
Object.entries()
迭代对象的键值条目,如下所示。请注意,它Object.entries()
为非对象返回一个空数组。 - 如果条目的值已经是
null
orundefined
,则返回。 - 如果条目的值是一个数组,则对每个数组项进行递归(转到第 1 步,将数组项作为要评估的新对象)。
- 如果条目的值是一个对象,则在该对象上递归。
- 否则,将条目的值设置为
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)
推荐阅读
- vb.net - vb.net 变量集合
- c# - 我怎样才能做出一些尝试方法来尝试每 20 秒下载一次文件,直到下载成功?
- javascript - 使用 d3 加载数据时出现'TypeError:无法读取未定义的属性'then'
- python - 为 LDA pca 保留 csv 特征标签
- javascript - 错误:没有可用于依赖类型的模块工厂:ContextElementDependency
- .net - 带有实体框架 6.2 的 Azure Function V2
- email - 使用 TIdSMTP 组件将邮件发送到具有 TLS/SSL 配置的服务器
- sql - 如何在 SQL Server 中“复制”选择语句?
- sql - 搜索旅行时间表的路线
- python-3.x - 使用 Pandas Python3 xlsxwriter 在彼此下方写入 xlsx 列