繁体   English   中英

如何过滤掉数组中的空值?

[英]How do I filter out empty values in an Array?

我正在发布到 API,如果在pricing表单字段中没有输入任何值,我想发送一个空数组。

我曾尝试使用 filter 方法,但是当我发出 post 请求时,它会发送一个包含空对象的数组,即[{}]

我的状态是:

title: "",
ticketing: "",                      // is equal to 0 (paid) or 1 (free)
pricing: [
           {
            price: "",
            currency: "",
            ticketLabel: ""
           }
         ],

当 ticketing 等于 1 时,不会输入pricecurrencyticketLabel

这是我的提交功能:

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: []

谢谢你的帮助!

当ticketing等于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
               }
      ] : []
}

在价格的过滤器部分你可以试试这个

<price-array>.filter(token => token.price.length > 0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM