想删除对象的属性,使用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
可不可以再定义一个没有这两个属性的类型,判断一下eventData的这两属性如果都是空,就用没有这两个属性的类型的对象承接一下eventData的 isEdit 和 isCycleMeeting ,这样可以么。
更多关于想删除对象的属性,使用delete和Reflect.deleteProperty()都不生效。parentId和meetingId值为‘’,请求的时候不需要这些属性(HarmonyOS 鸿蒙Next)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,delete
和Reflect.deleteProperty()
无法删除属性,可能是因为这些属性被定义为不可配置(configurable: false)。在JavaScript中,对象的属性可以通过Object.defineProperty()
或Object.defineProperties()
方法定义,并且可以设置configurable
为false
,这样属性就无法被删除。
如果parentId
和meetingId
的值为空字符串''
,且你希望在请求时排除这些属性,可以尝试以下方法:
-
使用
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"}
-
创建一个新对象:遍历原对象,将值不为空字符串的属性复制到新对象中。
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' }
这些方法可以在不直接删除属性的情况下,达到在请求中排除空值属性的目的。