Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 修改对象中键的值不会';行不通_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 修改对象中键的值不会';行不通

Javascript 修改对象中键的值不会';行不通,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个目标要说 requestObject: any = { "type": 'type1', "start": 0, "size": 10, "keywords": ['abcd','efgh'], filters: [], } 然后我想修改关键字的值,所以我这样做了 requestObject['keywords'] = ['pqr'] 但当我为它做控制台日志时,它显示了相同的值 "keywords": ['abcd','efgh'],

我有一个目标要说

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(NgbModal)。在组件A中,我有requestobject。现在,单击组件a中的按钮,组件B(NgbModal)弹出,我可以在其中更新值并点击submit。提交后,我使用事件发射器将这些值发送到组件A,并使用

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

我试图更新组件A中的对象,但它没有更新并给出相同的旧值。

当我在控制台中测试代码时

{
    "type": 'type1',
    "start": 0,
    "size": 10,
    "keywords": ['abcd','efgh'],
    filters: [],
}
已分配给变量
any
,而不是
requestObject
。这是有道理的,因为您正在执行
any=
,它将=符号后的所有内容分配给
any
,并且不返回任何内容。另外,我不认为使用冒号赋值在对象定义之外有效。resultObject对我来说没有定义。你可能想用

requestObject = {
    "type": 'type1',
    "start": 0,
    "size": 10,
    "keywords": ['abcd','efgh'],
    filters: [],
  }

当我在控制台中测试代码时

{
    "type": 'type1',
    "start": 0,
    "size": 10,
    "keywords": ['abcd','efgh'],
    filters: [],
}
已分配给变量
any
,而不是
requestObject
。这是有道理的,因为您正在执行
any=
,它将=符号后的所有内容分配给
any
,并且不返回任何内容。另外,我不认为使用冒号赋值在对象定义之外有效。resultObject对我来说没有定义。你可能想用

requestObject = {
    "type": 'type1',
    "start": 0,
    "size": 10,
    "keywords": ['abcd','efgh'],
    filters: [],
  }
您可能无意中碰到了“不变性”。 我怀疑您的响应对象是通过返回的,其主体(根据文档)是只读的

即使这不是根本原因,比如服务器响应。更好的方法是创建新对象并修改新对象

尝试以下一种或两种方法:

const requestObject:any={
“类型”:“类型1”,
“开始”:0,
“尺寸”:10,
“关键词”:['abcd','efgh'],
过滤器:[],
}
// -----------
//解决方案1:
//通过扩展旧对象并覆盖“关键字”项来创建新对象
const updatedRequest={…requestObject,关键字:['pqr']}
console.log(updateRequest)
// -----------
//解决方案2:
//通过JSON.stringify+JSON.parse进行深度复制
const clonedRequest=JSON.parse(JSON.stringify(requestObject))
clonedRequest.keywords=['pqr']
console.log(clonedRequest)
您可能无意中遇到了“不变性”。 我怀疑您的响应对象是通过返回的,其主体(根据文档)是只读的

即使这不是根本原因,比如服务器响应。更好的方法是创建新对象并修改新对象

尝试以下一种或两种方法:

const requestObject:any={
“类型”:“类型1”,
“开始”:0,
“尺寸”:10,
“关键词”:['abcd','efgh'],
过滤器:[],
}
// -----------
//解决方案1:
//通过扩展旧对象并覆盖“关键字”项来创建新对象
const updatedRequest={…requestObject,关键字:['pqr']}
console.log(updateRequest)
// -----------
//解决方案2:
//通过JSON.stringify+JSON.parse进行深度复制
const clonedRequest=JSON.parse(JSON.stringify(requestObject))
clonedRequest.keywords=['pqr']
console.log(clonedRequest)

请提供一个。可能是
这个问题。但我们需要看更多的代码。对象冻结了吗?它允许突变吗?“这个”的背景?请在不起作用的地方提供。您将this.requestObject['keywords']=['pqr']放置在何处?(对我有效)请提供一个。可能是
这个问题。但我们需要看更多的代码。对象冻结了吗?它允许突变吗?“这个”的背景?请在不起作用的地方提供。您将this.requestObject['keywords']=['pqr']放置在何处?(它对我有效)问题被标记为,并且
any
是一个类型定义。无论如何,我也尝试了这个,但没有成功。它的相似对象不是对它的任何更改。这很奇怪。问题被标记为,并且
any
是一个类型定义。无论如何,我也尝试过,但没有成功。它的相似对象不是对它的任何更改。这很奇怪。