Javascript 如何过滤数组中的空值?
我正在发布到API,如果在Javascript 如何过滤数组中的空值?,javascript,arrays,json,reactjs,post,Javascript,Arrays,Json,Reactjs,Post,我正在发布到API,如果在定价表单字段中没有输入值,我想发送一个空数组 我尝试过使用filter方法,但当我发出post请求时,它会发送一个带有空对象的数组,即[{}] 我的国家是: title: "", ticketing: "", // is equal to 0 (paid) or 1 (free) pricing: [ { price: "", currency: "",
定价
表单字段中没有输入值,我想发送一个空数组
我尝试过使用filter方法,但当我发出post请求时,它会发送一个带有空对象的数组,即[{}]
我的国家是:
title: "",
ticketing: "", // is equal to 0 (paid) or 1 (free)
pricing: [
{
price: "",
currency: "",
ticketLabel: ""
}
],
当票务等于1时,价格
、货币
和票务标签
将不输入任何值
这是我的提交功能:
handleSubmit = async (event) => {
event.preventDefault();
const info = {
title: this.state.title,
ticketing: this.state.ticketing,
price: [
{
currency: this.state.currency,
price: this.state.price,
label: this.state.ticketLabel
}
].filter(token => Object.keys(token).length != 0)
}
我把它贴成
axios
.post(`https://www.diaspora100.com/api/v1/public/events/`, {
info,
})
目前,该职位为:
price: [{}]
0: {}
我想将其发布为:
price: []
谢谢你的帮助
当票务等于1时,价格不输入值,
货币和票号标签
也许你想要这样的东西
const info = {
title: this.state.title,
ticketing: this.state.ticketing,
price: this.state.ticketing !== 1 ? [
{
currency: this.state.currency,
price: this.state.price,
label: this.state.ticketLabel
}
] : []
}
在价格的过滤部分,你可以试试这个
.filter(令牌=>token.price.length>0)
过滤器(令牌=>Object.keys(令牌).value!=0)
Object.keys返回一个数组,它没有名为value
对象的属性。keys(令牌)
是一个数组,而对象。keys(令牌)。value
将始终是未定义的对不起,我指的是长度,我已经更新了我的问题当票务等于1时,不会输入价格、货币和票号标签的值,因此键仍然存在,因此对象。键(toke)。长度将始终大于0
长度将始终为3,因为对象中有3个键,无论它们是否为空。你的过滤器是错误的,但你的整个对象没有多大意义。。。也许你应该更新你的问题,提供更多关于你试图表达/实现什么的信息……因为票证是布尔值,所以你可以把它作为this.state.ticketing&&object | |[]
总之你的答案是正确的+1