我有这个JS对象:
.header img{
height:Auto;
left:0;
margin:0;
padding:0;
position:absolute;
width:100vw;
z-index:1;
}
我想将其转换为JSON,但我不希望它具有this.state = {
name: "",
email: "",
phone: "",
protocol: "",
area: "",
subject: "",
message: "",
validation: this.validator.valid()
}
属性。
我已经尝试了以下方法:
validation: this.validator.valid()
还有其他方法吗?
答案 0 :(得分:4)
JSON.stringify
接受您可以使用的替换回调。替换功能使用键k
,值v
被字符串化为参数。返回undefined将具有不将键包含在最终结果中的作用:
state = {
name: "",
email: "",
phone: "",
protocol: "",
area: "",
subject: "",
message: "",
validation: "some val"
}
const test = JSON.stringify(state, (k, v) => k != 'validation' ? v : undefined);
console.log(test)
注意:像这样使用它也会从所有子对象中删除validation
键,这可能是您想要的,也可能不是您想要的。
答案 1 :(得分:1)
如果放置未定义,则JSON.stringify将跳过它:
const yourState = {
name: "",
email: "",
phone: "",
protocol: "",
area: "",
subject: "",
message: "",
validation: true,
}
const copy = {
...yourState,
validation: undefined,
};
console.log(JSON.stringify(copy));
此外,您不能从JSON.stringify中执行删除操作,因为它是一个字符串,而不是对象文字。
答案 2 :(得分:0)
它将起作用。
CART_C
答案 3 :(得分:0)
更新-我找到了其他解决方案
事实上,这非常简单。我发现了解决方法here。 以下几行解决了我的问题:
const formSubmit = JSON.stringify(this.state, ['name', 'email', 'phone', 'protocol','area','subject', 'message']);