Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/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 - Fatal编程技术网

Javascript 如何更新对象属性?

Javascript 如何更新对象属性?,javascript,Javascript,我有这个阵列: 让myArray=[ { 身份证号码:20, 评论:{ 提科尔:“这是一个新的评论” }, 结果:“我的结果” } ]; 现在,我正在尝试更新TICOL属性,方法是首先创建数组的副本,如下所示: 让someArray=[…myArray]; 让finalArray=someArray.map(obj=>{ obj.comments.TICOL=obj.comments.TICOL.replaceAll('new','TEST') }); 但是finalArray总是[未定义]

我有这个阵列:

让myArray=[
{
身份证号码:20,
评论:{
提科尔:“这是一个新的评论”
},
结果:“我的结果”
}
];
现在,我正在尝试更新TICOL属性,方法是首先创建数组的副本,如下所示:

让someArray=[…myArray];
让finalArray=someArray.map(obj=>{
obj.comments.TICOL=obj.comments.TICOL.replaceAll('new','TEST')
});

但是finalArray总是
[未定义]
。谁能告诉我我错过了什么?谢谢

您必须在
map
方法中返回新值:

让finalArray=someArray.map(obj=>{
obj.comments.TICOL=obj.comments.TICOL.replaceAll('new','TEST');
返回obj;
});

,因此它返回的数组中有
未定义的
——函数调用的隐式值。您没有返回任何内容。但为什么要使用地图呢?如果你想变异,使用一种简单的迭代方法,比如foreach,这也是一个重要的观点<代码>[…myArray]仅创建浅拷贝。由于元素是对象,更改其属性将影响两个数组。请注意,
[…myArray]
返回浅层副本,第二个数组中的元素只是引用第一个数组中的对象,因此修改第一个数组中的对象也会修改第二个数组中的对象(因为它们是相同的对象)。您的意思是,如何进行深度复制
var someArray=JSON.parse(JSON.stringify(myArray))