想删除对象的属性,使用delete和Reflect.deleteProperty()都不生效。parentId和meetingId值为‘’,请求的时候不需要这些属性(HarmonyOS 鸿蒙Next)

想删除对象的属性,使用delete和Reflect.deleteProperty()都不生效。parentId和meetingId值为‘’,请求的时候不需要这些属性(HarmonyOS 鸿蒙Next)

export interface IGetInviteLimitParams {
  isEdit: boolean,
  isCycleMeeting: boolean,
  parentId?: string,
  meetingId?: string
}

const eventData: IGetInviteLimitParams =
{
  isEdit,
  isCycleMeeting,
  parentId: (isEdit && isCycleMeeting) ? this.meetingDetailInfo?.parentId : '',
  meetingId: (isEdit && !isCycleMeeting) ? this.meetingDetailInfo?.id : ''
}

//获取参会人最大人数限制
getInviteLimit = async () => {
  const result = await this.rmRequestAPI.getInviteLimit(this.InviteLimitParams)
}

更多关于想删除对象的属性,使用delete和Reflect.deleteProperty()都不生效。parentId和meetingId值为‘’,请求的时候不需要这些属性(HarmonyOS 鸿蒙Next)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

可不可以再定义一个没有这两个属性的类型,判断一下eventData的这两属性如果都是空,就用没有这两个属性的类型的对象承接一下eventData的 isEdit 和 isCycleMeeting ,这样可以么。

更多关于想删除对象的属性,使用delete和Reflect.deleteProperty()都不生效。parentId和meetingId值为‘’,请求的时候不需要这些属性(HarmonyOS 鸿蒙Next)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,deleteReflect.deleteProperty()无法删除属性,可能是因为这些属性被定义为不可配置(configurable: false)。在JavaScript中,对象的属性可以通过Object.defineProperty()Object.defineProperties()方法定义,并且可以设置configurablefalse,这样属性就无法被删除。

如果parentIdmeetingId的值为空字符串'',且你希望在请求时排除这些属性,可以尝试以下方法:

  1. 使用JSON.stringify()replacer函数:在序列化对象时,通过replacer函数过滤掉值为空字符串的属性。

    const obj = { parentId: '', meetingId: '', otherProp: 'value' };
    const jsonString = JSON.stringify(obj, (key, value) => value === '' ? undefined : value);
    console.log(jsonString); // 输出: {"otherProp":"value"}
    
  2. 创建一个新对象:遍历原对象,将值不为空字符串的属性复制到新对象中。

    const obj = { parentId: '', meetingId: '', otherProp: 'value' };
    const newObj = Object.keys(obj).reduce((acc, key) => {
        if (obj[key] !== '') {
            acc[key] = obj[key];
        }
        return acc;
    }, {});
    console.log(newObj); // 输出: { otherProp: 'value' }
    

这些方法可以在不直接删除属性的情况下,达到在请求中排除空值属性的目的。

回到顶部