避免请求对象上的空字符串值

时间:2019-11-11 09:27:14

标签: javascript reactjs axios

对于某些axios请求:

            API.post(
              `v${process.env.REACT_APP_API_VERSION}/register/company/`,
              {
                type: values.type,
                dba: values.dba,
                ein: values.ein,
                file_type: values.file_type,
              },

如果参数没有被赋值(仍然是“”),我想避免发送参数。

即我想知道在我的请求对象中仅包含非空参数的最干净的方法。 我可以使用if检查来执行此操作,但是对较大请求中的每个项目都没有意义。 例如:

            const postData = {
              first_name: values.first_name,
              last_name: values.last_name
            };
            if (values.middle_name !== "") {
              postData.middle_name = values.middle_name;
            }

谢谢

2 个答案:

答案 0 :(得分:2)

您可以尝试以下操作:

Object.keys(values).forEach((key) => {
  if(!values[key]) delete values[key];
})

它的基本作用是删除values对象内所有错误的元素,其中包括空字符串。

答案 1 :(得分:0)

我能想到的最短的解决方案。对于一般的解决方案,我将使用包装器,但是如果您只需要检查几个属性,那么这个就足够了。

        const v = values; 
        API.post(
          `v${process.env.REACT_APP_API_VERSION}/register/company/`,
          {
            ...(v.type&&{type: v.type}),
            ...(v.dba&&{dba: v.dba}),
            ...(v.ein&&{type: v.ein}),
            file_type: values.file_type,
          },