JavaScript-替换嵌套对象的值,而不影响整个对象
问题是: 我有这个功能。它从有效负载中移除所有具有空字符串作为值的KeyValue对 问题是,我想在嵌套的对象中应用它。不是整个有效载荷对象。例如:JavaScript-替换嵌套对象的值,而不影响整个对象,javascript,typescript,object,Javascript,Typescript,Object,问题是: 我有这个功能。它从有效负载中移除所有具有空字符串作为值的KeyValue对 问题是,我想在嵌套的对象中应用它。不是整个有效载荷对象。例如: configuration: { conf1: "", conf2: "Something", conf3: "" }, resourceName: "Name" 在本例中,我希望在configurationObject中应用我的UtilityFunction。这将导致: configuration: { conf2: "Some
configuration: {
conf1: "",
conf2: "Something",
conf3: ""
},
resourceName: "Name"
在本例中,我希望在configurationObject中应用我的UtilityFunction。这将导致:
configuration: {
conf2: "Something",
},
resourceName: "Name"
所以,我用了一些方法。Object.assign,rest,以便为对象提供所有外部参数,以及仅应用于配置对象的实用程序输出
我试过:
Object.assign(formValues, removeEmptyKeysUtil(formValues.configuration));
// Results in printing the values in the main object.
此外:
你能帮我解释一下我做错了什么吗?stripeEmptyStrings函数接受原始对象和目标键。
此函数还可以处理对象的目标属性是否为,并将删除该属性,无论该属性是否为对象
常量stripEmptyStrings=对象,目标=>{
const_target=对象[目标];
如果_target=={
删除对象[目标]
返回对象;
}
否则,如果typeof _target==对象{
Object.keys\u target.forEachk=>{
如果_目标[k]==删除_目标[k];
}
}
返回{
对象
[目标]:_目标,
}
}
常数obj1={
配置:{
会议一:,
对话二:什么,,
会议3:
},
resourceName:Name,
}
const result1=stripEmptyStringsobj1,配置;
console.logresult1
常数obj2={
removeMe:,
resourceName:Name2,
}
const result2=stripEmptyStringsobj2,removeMe;
console.logresult2您的答案非常正确。但我找到了另一个选择。你看,这个函数应该足够通用。因为它被用于多个地方。此外,数据是动态的,这将增加另一个难度。经过多次尝试和错误后,我使用了以下内容:Object.assign{},formValues,{configuration:removemptykeysutilformvalues.configuration},它似乎工作得很好,将来还可以用作更多嵌套对象的引用。谢谢你抽出时间。
{ formValues, ...removeEmptyKeysUtil(formValues.configuration) };
// which does not do anything