更改Javascript数组中的对象值

更改Javascript数组中的对象值,javascript,arrays,Javascript,Arrays,这个问题可能被问了好几次,但我得到的错误很奇怪。我一周前刚开始使用Javascript 我有一个函数可以更改声明对象的属性。为了简单地再现这个问题,我添加了下面的代码片段 我尝试将一个对象添加到数组中几次,在另一个for循环中,我尝试更改数组内部对象属性的值 功能数据包(缓冲区、标签){ var数据包={ 数据:[] } var packetArray=[]; 对于(变量i=0;i

这个问题可能被问了好几次,但我得到的错误很奇怪。我一周前刚开始使用Javascript

我有一个函数可以更改声明对象的属性。为了简单地再现这个问题,我添加了下面的代码片段

我尝试将一个对象添加到数组中几次,在另一个for循环中,我尝试更改数组内部对象属性的值

功能数据包(缓冲区、标签){
var数据包={
数据:[]
}
var packetArray=[];
对于(变量i=0;i],[“字符串中的随机数据”]
创建一个
数据包
,并将其推送到阵列的多个位置。它不会复制数据包,但会引用它。更改
packetArray[0]
确实会更改
packetArray
,因此
packetArray[1]
,因为它们都引用同一事物。将
数据包
声明移动到循环中,为每个索引创建一个新数据包

我会这样写:

 const packetArray = Array.from(buffer, data => ({ data }));

这是因为相同的
packet
对象被推送到数组中,当您从任何地方更改
packet
数据时,它会在引用它的地方得到反映。试试下面,我刚刚删除了对象
数据包

功能数据包(缓冲区、标签){
var packetArray=[];
对于(变量i=0;i数据包([[1,2,3,4,5],[5,6,7,8,9],[“字符串中的随机数据])这起作用了。我不得不说这种语言与C/C++有点不同。