Javascript 将元素推入循环内部的数组中

Javascript 将元素推入循环内部的数组中,javascript,Javascript,我希望通过修改每个循环中的一个值,从单个元素动态生成一个50元素的数组 const eventRecords = { Records: [] } for (let i = 0; i < 50; i++) { const aRecord = Object.assign({}, eventS3Chunk.Records[0]) aRecord.s3.object.key = `F7kdfh2Dj3j2s8/uploads/10000_users_wi

我希望通过修改每个循环中的一个值,从单个元素动态生成一个50元素的数组

const eventRecords = { Records: [] }
      for (let i = 0; i < 50; i++) {
        const aRecord = Object.assign({}, eventS3Chunk.Records[0])
        aRecord.s3.object.key = `F7kdfh2Dj3j2s8/uploads/10000_users_without_password-20190102T030405Z/${i}.csv`
        eventRecords.Records.push(Object.assign({}, aRecord))
      }
const eventRecords={Records:[]}
for(设i=0;i<50;i++){
const aRecord=Object.assign({},eventS3Chunk.Records[0])
aRecord.s3.object.key=`F7kdfh2Dj3j2s8/uploads/10000_users_无密码-20190102T030405Z/${i}.csv`
eventRecords.Records.push(Object.assign({},aRecord))
}

eventRecords.Records以50份相同元素的副本结束,这些元素具有
s3.object.key=F7kdfh2Dj3j2s8/uploads/10000个用户,无需密码-20190102T030405Z/49.csv

这是因为您要创建
记录[0]
的浅拷贝,请使用
JSON.parse(JSON.stringify(eventS3Chunk.Records[0])
:
const eventS3Chunk={
记录:[{
s3:{
对象:{
键:“a”
}
}
}]
};
const eventRecords=Array.from({
长度:50
},(u,i)=>{
const aRecord=JSON.parse(JSON.stringify(eventS3Chunk.Records[0]);
aRecord.s3.object.key=`F7kdfh2Dj3j2s8/uploads/10000_users_无密码-20190102T030405Z/${i}.csv`;
返回记录;
});

console.log(eventRecords)
这是因为您正在创建
记录[0]的浅层副本
,请使用
JSON.parse(JSON.stringify(eventS3Chunk.Records[0])
:
const eventS3Chunk={
记录:[{
s3:{
对象:{
键:“a”
}
}
}]
};
const eventRecords=Array.from({
长度:50
},(u,i)=>{
const aRecord=JSON.parse(JSON.stringify(eventS3Chunk.Records[0]);
aRecord.s3.object.key=`F7kdfh2Dj3j2s8/uploads/10000_users_无密码-20190102T030405Z/${i}.csv`;
返回记录;
});

console.log(eventRecords)
Object.assign不是深度复制,要复制嵌套对象,有一个方法是JSON.parse(JSON.stringify(obj)),请查看深度克隆。在您的示例中,s3和/或对象是通过引用传递的,因此将密钥分配给一个会影响所有记录。object.assign不是深度复制,对于复制嵌套对象,一个方法是JSON.parse(JSON.stringify(obj)),请查看深度克隆。在您的示例中,s3和/或对象是通过引用传递的,因此将键分配给一个会影响所有记录。