修改对象中键的值不起作用

我有一个对象说


requestObject: any = {

    "type": 'type1',

    "start": 0,

    "size": 10,

    "keywords": ['abcd','efgh'],

    filters: [],

  }

然后我想修改关键字的值,所以我做了


 requestObject['keywords'] =  ['pqr']

但是当我为它做控制台日志时。它显示相同的值。


"keywords": ['abcd','efgh'],

我尝试删除密钥,然后添加具有相同密钥名称但仍然相同的更新值。


delete requestObject.keywords

requestObject['keywords'] =  ['pqr'];

详细说明:


我有两个同级组件,让我们说A和B(Ngb模式)。在组件 A 中,我有请求对象。现在,单击组件A中的按钮时,组件B(NgbModal)会弹出,我可以在其中更新值并点击提交。提交后,我使用事件发射器将这些值发送到组件A,并使用


modalRef.componentInstance.filterApplied.subscribe((res: any) => {}

并且我正在尝试更新组件 A 中的对象。但它没有更新和给出相同的旧值。


慕运维8079593
浏览 63回答 2
2回答

撒科打诨

你可能会无意中碰到“不变性”。我怀疑您的响应对象是通过HttpResponse返回的,其主体(根据文档)是只读的。即使这不是这里的根本原因,通常最好避免直接修改对象(如服务器响应)。更好的方法是创建一个新对象并修改新对象。请尝试以下一种或两种方法:const requestObject: any = {  "type": 'type1',  "start": 0,  "size": 10,  "keywords": ['abcd','efgh'],  filters: [],}// -----------// solution 1:// create a new object by spreading the old one and overwriting the 'keywords' itemconst updatedRequest = {...requestObject, keywords: ['pqr'] }console.log(updatedRequest)// -----------// solution 2:// deep copy via JSON.stringify + JSON.parseconst clonedRequest = JSON.parse(JSON.stringify(requestObject))clonedRequest.keywords = ['pqr']console.log(clonedRequest)

拉风的咖菲猫

当我在控制台中测试代码时,{    "type": 'type1',    "start": 0,    "size": 10,    "keywords": ['abcd','efgh'],    filters: [],}被赋给变量 ,而不是 。这是有道理的,就像你正在做的那样,它将=符号之后的所有内容分配给,并且不返回任何内容。另外,我不认为使用冒号进行赋值在对象定义之外有效。结果对我来说对象是未定义的。您可能希望将作业替换为anyrequestObjectany =anyrequestObject = {    "type": 'type1',    "start": 0,    "size": 10,    "keywords": ['abcd','efgh'],    filters: [],  }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript