首页 > 解决方案 > 将元素推入for循环内的数组中

问题描述

我想通过在每个循环上修改一个值,从单个元素动态生成 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))
      }

eventRecords.Records 以 50 个相同元素的副本结束s3.object.key = F7kdfh2Dj3j2s8/uploads/10000_users_without_password-20190102T030405Z/49.csv

标签: javascript

解决方案


这是因为您正在创建 , 的浅表副本Records[0],请使用JSON.parse(JSON.stringify(eventS3Chunk.Records[0]));

const eventS3Chunk = {
  Records: [{
    s3: {
      object: {
        key: "a"
      }
    }
  }]
};

const eventRecords = Array.from({
  length: 50
}, (_, i) => {
  const aRecord = JSON.parse(JSON.stringify(eventS3Chunk.Records[0]));
  aRecord.s3.object.key = `F7kdfh2Dj3j2s8/uploads/10000_users_without_password-20190102T030405Z/${i}.csv`;
  return aRecord;
});

console.log(eventRecords)


推荐阅读