我尝试将forloop写入一个JSON文件,它只打印数组的最后一项
let rawdata = fs.readFileSync('./input_data.json');
let jsondata = JSON.parse(rawdata);
let result='';
let key='';
let data = {
items: []
}
myrecords=[];
for(let i = 0; i < jsondata.records.length; i++) {
let obj = jsondata.records[i];
result = obj.Id
items = jsondata.records[i].data
data.items = [items];
data.key=result
myrecords.push(data)
}
var log_file = fs.createWriteStream(__dirname + '/output.json', {flags : 'w'});
var log_stdout = process.stdout;
console.log = function(d) {
log_file.write(util.format(d) + '\n');
log_stdout.write(util.format(d) + '\n');
};
console.log(JSON.stringify(myrecords, null, 2))
1条答案
按热度按时间zbdgwd5y1#
在循环中反复使用相同的
data
对象,并将引用推入myrecords
。因此,myrecords
中的所有元素都引用同一个data
对象。在循环中修改对象时,它会影响所有先前添加的项。您应该在循环的每次迭代中创建一个新的
data
对象。尝试以下操作: