gpt4 book ai didi

javascript - 在不知道 prop 名称的情况下保留和设置对象子属性默认值

转载 作者:行者123 更新时间:2023-12-01 02:59:35 26 4
gpt4 key购买 nike

user = {
firstName: 'Nick',
age: 35
location: {
country: 'USA',
city: 'NYC',
},
}

我经常在这种情况下运行:

我有一个突变/ reducer ,需要将多个 Prop 设置为默认值。我不想一一明确地取消设置/重置它们。 (例如:用户注销:user.firstName = ''等)。

在不知道对象结构的情况下删除每个值(并设置为 null 或空字符串)的最有效、安全和高性能的方法是什么?任何 lodash 或其他库都有这种用途的方法吗?

我基本上正在考虑使用 for...in 的递归解决方案

for (prop in user) {
console.log(prop);
}

Object.keys,或保留可以替换前一个的默认对象。

期望的结果

user = {
firstName: '',
age: null,
location: {
country: '',
city: '',
},
}

最佳答案

您可以使用递归函数将所有值设置为 null 或空字符串。如果该值是一个对象,则将其传递回函数。

let user = {
firstName: 'Nick',
age: 35,
location: {
country: 'USA',
city: 'NYC',
},
}

function nullify(obj) {
Object.keys(obj).forEach(key => {
if (typeof obj[key] === 'object') {
return nullify(obj[key]);
}
obj[key] = (typeof obj[key] === 'string') ? '' : null;
});
return obj;
}

console.log(nullify(user));

关于javascript - 在不知道 prop 名称的情况下保留和设置对象子属性默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46532708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com